Come triggersre e distriggersre IDENTITY_INSERT utilizzando SQL Server 2008?

Perché ricevo un errore durante l’inserimento di un inserto quando IDENTITY_INSERT è impostato su OFF?

Come si accende correttamente in SQL Server 2008? È utilizzando SQL Server Management Studio?

Ho eseguito questa query:

 SET IDENTITY_INSERT Database. dbo. Baskets ON 

Quindi ho ricevuto il messaggio nella console che il / i comando / i è stato completato con successo. Tuttavia quando eseguo l’applicazione, mi dà ancora l’errore mostrato di seguito:

 Cannot insert explicit value for identity column in table 'Baskets' when IDENTITY_INSERT is set to OFF. 

Tramite SQL come da MSDN

 SET IDENTITY_INSERT sometableWithIdentity ON INSERT sometableWithIdentity (IdentityColumn, col2, col3, ...) VALUES (AnIdentityValue, col2value, col3value, ...) SET IDENTITY_INSERT sometableWithIdentity OFF 

Il messaggio di errore completo ti dice esattamente cosa c’è che non va …

Imansible inserire il valore esplicito per la colonna Identity nella tabella ‘sometableWithIdentity’ quando IDENTITY_INSERT è impostato su OFF.

Ho avuto un problema in cui non mi è stato permesso di inserirlo anche dopo aver impostato IDENTITY_INSERT ON.

Il problema era che non ho specificato i nomi delle colonne e per qualche motivo non mi è piaciuto.

 INSERT INTO tbl Values(vals) 

Quindi, in pratica, fai il pieno INSERT INTO tbl (cols) Values ​​(vals)

Importazione: è necessario scrivere colonne INSERT

 INSERT INTO TABLE SELECT * FROM 

Non è corretto.

 Insert into Table(Field1,...) Select (Field1,...) from TABLE 

È corretta

Soluzione:

  1. Imposta IDENTITY_INSERT su ON.

  2. Inserisci i dati dei clienti nella tabella Clienti.

  3. Imposta IDENTITY_INSERT su OFF.

Leggi l’articolo completo qui .

So che questo è un thread più vecchio, ma mi sono imbattuto in questo. Se l’utente sta tentando di eseguire inserimenti nella colonna Identity framework dopo qualche altra sessione, imposta IDENTITY INSERT ON, quindi è destinato ad ottenere l’errore sopra riportato.

L’impostazione del valore Inserisci id quadro e i comandi Inserisci DML successivi devono essere eseguiti dalla stessa sessione.

Qui @Beginner stava impostando Identity Insert ON separatamente e quindi eseguendo gli inserimenti dalla sua applicazione. Ecco perché ha ottenuto il seguente errore:

 Cannot insert explicit value for identity column in table 'Baskets' when IDENTITY_INSERT is set to OFF. 

Questo è probabile quando hai un campo PRIMARY KEY e stai inserendo un valore che sta duplicando o hai impostato il flag INSERT_IDENTITY su

Sembra imansible creare un database SET IDENTITY_INSERT. dbo. Cesti ON; prima di ogni SQL INSERT che invia batch. / È ansible inviare diversi INSERT … VALUES .. comandi avviati con un SET IDENTITY_INSERT … ON; stringa all’inizio. Basta non mettere alcun separatore di batch tra / non so perché SET IDENTITY_INSERT … ON smette di funzionare, dopo il blocco di invio (per es .: .ExecuteNonQuery () in c #) … Ho dovuto mettere SET IDENTITY_INSERT … ON; di nuovo all’inizio della successiva stringa di comando SQL.

È necessario aggiungere il comando “vai” dopo aver impostato l’inserto id quadro. Esempio:

 SET IDENTITY_INSERT sometableWithIdentity ON go INSERT sometableWithIdentity (IdentityColumn, col2, col3, ...) VALUES (AnIdentityValue, col2value, col3value, ...) SET IDENTITY_INSERT sometableWithIdentity OFF go