Warum erhalte ich beim Einfügen einen Fehler, wenn IDENTITY_INSERT
AUS eingestellt ist?
Wie schalte ich es in SQL Server 2008 richtig ein? Wird SQL Server Management Studio verwendet?
Ich habe diese Abfrage ausgeführt:
SET IDENTITY_INSERT Database. dbo. Baskets ON
Dann bekam ich die Nachricht in der Konsole zurück, dass die Befehle erfolgreich ausgeführt wurden. Wenn ich die Anwendung jedoch ausführe, wird immer noch der folgende Fehler angezeigt:
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
sql
sql-server-2008
Anfänger
quelle
quelle
Antworten:
Über SQL gemäß MSDN
Die vollständige Fehlermeldung sagt Ihnen genau, was falsch ist ...
quelle
Ich hatte ein Problem, bei dem ich es auch nach dem Setzen von IDENTITY_INSERT ON nicht einfügen konnte.
Das Problem war, dass ich die Spaltennamen nicht angegeben habe und es aus irgendeinem Grund nicht mochte.
Machen Sie also im Grunde die vollständigen INSERT INTO tbl (cols) -Werte (vals)
quelle
Importieren: Sie müssen Spalten in die
INSERT
Anweisung schreibenDas ist nicht richtig.
Ist richtig
quelle
Ich weiß, dass dies ein älterer Thread ist, aber ich bin gerade darauf gestoßen. Wenn der Benutzer nach einer anderen Sitzung versucht, Einfügungen in die Spalte Identität auszuführen, setzen Sie IDENTITY_INSERT ON, um den obigen Fehler zu erhalten.
Das Festlegen des Identity Insert-Werts und der nachfolgenden Insert DML-Befehle muss von derselben Sitzung ausgeführt werden.
Hier hat @Beginner Identity Insert separat aktiviert und dann die Einfügungen aus seiner Anwendung ausgeführt. Deshalb hat er den folgenden Fehler erhalten:
quelle
Dies ist wahrscheinlich, wenn Sie ein PRIMARY KEY-Feld haben und einen Wert einfügen, der dupliziert wird, oder wenn das INSERT_IDENTITY-Flag aktiviert ist
quelle
Es erscheint notwendig,
SET IDENTITY_INSERT Database.dbo.Baskets ON;
vor jedem SQL-INSERT
Sendebatch ein zu setzen .Sie können mehrere
INSERT ... VALUES ...
Befehle senden, dieSET IDENTITY_INSERT ... ON;
am Anfang mit einer Zeichenfolge gestartet wurden . Setzen Sie einfach kein Batch-Separator dazwischen.Ich weiß nicht, warum das
SET IDENTITY_INSERT ... ON
nach dem Sendeblock nicht mehr funktioniert (zum Beispiel.ExecuteNonQuery()
in C #). Ich mussteSET IDENTITY_INSERT ... ON;
am Anfang der nächsten SQL-Befehlszeichenfolge erneut setzen.quelle
Sie müssen den Befehl 'go' hinzufügen, nachdem Sie die Identitätseinfügung festgelegt haben. Beispiel:
quelle