Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jaki jest zakres SET IDENTITY_INSERT xyz ON?

Jest to opcja sesji, w której stół może mieć opcję tylko dla jednego stołu na raz, ale wiele różnych sesji może mieć tę opcję dla tego samego stołu (choć nie jestem pewien, czy kiedykolwiek byłby to dobry pomysł!)

Kiedy partia potomna się zakończy (która ustawia tę opcję), wygląda na to, że automatycznie zostaje rozbrojona dla połączenia.

CREATE TABLE Tst
(C INT IDENTITY(1,1))

EXEC('SET IDENTITY_INSERT Tst ON')
INSERT INTO Tst(C) VALUES (1) /*Fails - Complains IDENTITY_INSERT is off*/

SET IDENTITY_INSERT Tst ON
EXEC('INSERT INTO Tst(C) VALUES (1)') /*Succeeds this way round*/
SET IDENTITY_INSERT Tst OFF


SET IDENTITY_INSERT Tst ON
EXEC('SET IDENTITY_INSERT Tst ON; INSERT INTO Tst(C) VALUES (1);') /* Also succeeds like this*/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj „datetimeoffset” na „datetime2” w SQL Server (przykłady T-SQL)

  2. Przechowuj obraz w bazie danych i pobierz go

  3. Ustaw domyślny profil publiczny dla poczty bazy danych (SSMS)

  4. Pobierz varbinary(MAX) z SQL Server do byte[] w C#

  5. Jak wstawić dane programu Excel lub CSV do tabeli za pomocą graficznego interfejsu użytkownika w programie SQL Server — samouczek SQL Server / TSQL, część 102