Salve a tutti,
puoi provare tranquillamente con "2" finestre di query in SSMS...
come test puoi provare i seguenti script:
1 finestra di Query:
SET NOCOUNT ON;
USE tempdb;
GO
CREATE TABLE dbo.Test (
Id int IDENTITY,
Valore int
);
GO
DECLARE @spid int;
SELECT @spid = @@SPID
SET IDENTITY_INSERT dbo.Test ON;
INSERT INTO dbo.Test (Id, Valore)
VALUES (1, @spid);
GO
DECLARE @spid int;
SELECT @spid = @@SPID
INSERT INTO dbo.Test (Id, Valore)
VALUES (2, @spid);
GO
PRINT 'ASPETTA QUI e';
PRINT 'ESEGUI SCRIPT in altra FINESTRA di query';
GO
SELECT *
FROM dbo.Test;
GO
SET IDENTITY_INSERT dbo.Test OFF;
GO
DROP TABLE dbo.Test;
esegui il codice in DEBUG, quindi "passo passo", fino "ASPETTA QUI"...
nella seconda finestra di Query esegui:
DECLARE @spid int;
SELECT @spid = @@SPID
INSERT INTO dbo.Test (Id, Valore)
VALUES (3, @spid);
e vedrai che ti dara' errore, sollevando l'eccezione "Cannot insert explicit value for identity column in table 'Test' when IDENTITY_INSERT is set to OFF."
torna nella prima finestra e termina l'esecuzione, ed infatti troverai solo le 2 righe inserite da questo spid...
comunque solitamente, la gestione del comando INSERT su tabelle con impostazione IDENTITY per una colonna NON prevedono MAI nella "lista" delle colonne coinvolte la colonna con proprieta' IDENTITY, quindi (a prescindere, di base) NON avresti comunque questo problema...
al di la' di quanto indicato, ricorda che l'impostazione richiede privilegi ALTER permission sulla tabella (
https://docs.microsoft.com/it-it/sql/t-sql/statements/set-identity-insert-transact-sql?view=sql-server-2017 ), e solitamente questi privilegi non si concedono agli "utenti interattivi"...
saluti omnia
--
Andrea