Jak włączyć i wyłączyć IDENTITY INSERT za pomocą SQL Server 2008?

Dlaczego dostaję błąd podczas wstawiania, gdy IDENTITY_INSERT jest ustawione na OFF?

Jak włączyć go poprawnie w SQL Server 2008? Czy za pomocą SQL Server Management Studio?

Uruchomiłem to zapytanie:

SET IDENTITY_INSERT Database. dbo. Baskets ON

Potem dostałem wiadomość z konsoli, że polecenia zostały pomyślnie zakończone. Jednak gdy uruchamiam aplikację, nadal wyświetla mi błąd pokazany poniżej:

Cannot insert explicit value for identity column in table 'Baskets' when 
IDENTITY_INSERT is set to OFF.
Author: SteveC, 2011-08-15

7 answers

Poprzez SQL zgodnie z MSDN

SET IDENTITY_INSERT sometableWithIdentity ON

INSERT sometableWithIdentity (IdentityColumn, col2, col3, ...)
VALUES (AnIdentityValue, col2value, col3value, ...)

SET IDENTITY_INSERT sometableWithIdentity OFF

Kompletny komunikat o błędzie mówi ci dokładnie co jest nie tak...

Nie można wstawić jawnej wartości kolumny identity w tabeli 'sometableWithIdentity', gdy IDENTITY_INSERT jest ustawione na OFF.

 573
Author: gbn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-04 16:06:16

Miałem problem, w którym nie pozwalał mi wstawić go nawet po ustawieniu IDENTITI_INSERT na.

Problem polegał na tym, że nie podałem nazw kolumn i z jakiegoś powodu mu się to nie podobało.

INSERT INTO tbl Values(vals)

Więc w zasadzie zrobić pełny INSERT do wartości TBL (cols) (vals)

 46
Author: Ismael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-08 14:56:38

Import: Musisz pisać kolumny w INSERT statement

INSERT INTO TABLE
SELECT * FROM    

Nie jest poprawna.

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

Jest poprawne

 28
Author: R.Alonso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-22 09:58:46

Wiem, że to starszy wątek, ale wpadłem na to. Jeśli użytkownik próbuje uruchomić wstawki w kolumnie Identity po innej sesji ustawionej na IDENTITY_INSERT, to musi uzyskać powyższy błąd.

Ustawianie wartości Identity Insert i kolejnych poleceń Insert DML ma być uruchamiane przez tę samą sesję.

Tutaj @ początkujący ustawiał Identity Insert osobno, a następnie uruchamiał wstawki ze swojej aplikacji. Dlatego dostał poniżej Błąd:

Cannot insert explicit value for identity column in table 'Baskets' when 
IDENTITY_INSERT is set to OFF.
 1
Author: aok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-22 07:35:08

Jest to prawdopodobne, gdy masz pole klucza podstawowego i wstawiasz wartość, która się duplikuje lub masz ustawioną flagę INSERT_IDENTITY na on

 0
Author: seanyp20001,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-20 14:46:50

Wygląda na to, że nie można umieścić zbioru danych IDENTITI_INSERT. dbo. Kosze na; Przed każdym SQL INSERT wysyłanie partii. / Możesz wysłać kilka wstawek ... Wartości .. polecenia zaczynały się od jednego zestawu IDENTITY_INSERT ... ON; string na początku. Tylko nie umieszczaj separatora wsadowego między/ Nie wiem dlaczego zestaw IDENTITY_INSERT ... Na przestaje działać, po bloku wysyłania (np.: .ExecuteNonQuery () w c#)... Musiałem ustawić IDENTITY_INSERT ... Włącz; ponownie na początku następnego polecenia SQL sznurek.

 -1
Author: Jettero,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-08 20:08:34

Musisz dodać polecenie " go " po ustawieniu insert tożsamości. Przykład:

SET IDENTITY_INSERT sometableWithIdentity ON
go

INSERT sometableWithIdentity (IdentityColumn, col2, col3, ...)
VALUES (AnIdentityValue, col2value, col3value, ...)

SET IDENTITY_INSERT sometableWithIdentity OFF
go
 -6
Author: Bruce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-03 06:48:36