SET IDENTITY_INSERT ON in comando da pagina ASP

di il
1 risposte

SET IDENTITY_INSERT ON in comando da pagina ASP

In una pagina asp devo copiare dati da una tabella ad un'altra

se setto IDENTITY_INSERT ad ON mi vale solo per la sessione corrente o per tutti i collegati al sito ?

Mi spiego meglio se eseguo il comando SET IDENTITY_INSERT ON per una tabella

se un'altro utente esegue una insert gli vale anche a lui o vale solo nella mia sessione ?

1 Risposte

  • Re: SET IDENTITY_INSERT ON in comando da pagina ASP

    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
Devi accedere o registrarti per scrivere nel forum
1 risposte