Sto utilizzando un set di dati per inserire dati da convertire da un database precedente. Il requisito è mantenere gli attuali numeri ID_ordine.Disattiva IDENTITY_INSERT per l'inserto Dataset
Ho provato con:
SET IDENTITY_INSERT orders ON;
Questo funziona quando sono in SqlServer Management Studio, sono in grado di successo
INSERT INTO orders (order_Id, ...) VALUES (1, ...);
Tuttavia, non mi permette di farlo tramite l'inserto del set di dati che sto utilizzando nel mio script di conversione. Che assomiglia in questo modo:
dsOrders.Insert(oldorderId, ...);
Ho eseguito SQL (SET IDENTITY_INSERT ordini ON) anche durante il processo. So che posso farlo solo contro un tavolo alla volta e lo sono.
Continuo a ricevere questa eccezione:
eccezione quando si tenta di inserire un valore nella tabella ordini System.Data.SqlClient.SqlException: Impossibile inserire valore esplicito per la colonna Identity nella tabella 'ordini' quando IDENTITY_INSERT è impostato su OFF.
Qualche idea?
Aggiornamento
alexs & AlexKuznetsov hanno detto che SET_IDENTITY_INSERT è un'impostazione livello di connessione, tuttavia, quando guardo lo SQL in SQLProfiler, ho notato diversi comandi.
- In primo luogo -
SET IDENTITY_INSERT DEAL ON
- In secondo luogo -
exec sp_reset_connection
- Terzo al n - i miei vari comandi SQL tra cui selezionare & dell'inserto
C'è sempre una exec sp_reset_connection
tra i comandi, però, credo che questa è responsabile della perdita di valore nell'impostazione Identity_Insert.
C'è un modo per impedire che il set di dati effettui il reset della connessione?
Lol, ho avuto lo stesso stupido errore – Jupaol