sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er omfanget af SET IDENTITY_INSERT xyz ON?

Det er en sessionsindstilling, et bord kun kan have indstillingen på for et bord ad gangen, men flere forskellige sessioner kan have det på for det samme bord (men ikke sikker på, at det nogensinde ville være en god idé!)

Når en underordnet batch er færdig (der indstiller denne indstilling), ser det ud til, at den automatisk bliver deaktiveret for forbindelsen.

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. Sådan får du rekordantal ved hjælp af referencemarkøren i oracle10g

  2. Sådan opretter du forbindelse til Oracle som SYS fra SQL*Plus i Java

  3. Partitionstabel, hver partition på forskellig disk på min HDD

  4. MySQL versus SQL Server Express