Heute gab es mal wieder eine lästige Fehlermeldung von einem MS-SQL Server (2000).
Ein Programm, welches unter MS-SQL 2005 entwickelt wurde, machte Probleme unter MS-SQL 2000. Die Fehlermeldung war:
Ein expliziter Wert muss für die Identitätsspalte in der Tabelle angegeben werden, wenn IDENTITY_INSERT auf ON festgelegt ist.
Die Lösung für das Problem, scheint trivial zu sein - hat trotzdem seine Zeit gedauert, da die Rückmeldung des SQL-Servers nicht eine genaue Fehlerbeschreibung gewesen ist.
Problem
Das Problem, war ein SQL-Konstrukt, welches ungefähr so aussah:
Download Code!
INSERT INTO Tabelle
SELECT foo, bar FROM Quelltabelle
WHERE ID = 5
ORDER BY bar ASC
Lösung
Das Problem war das ORDER BY, welches im INSERT-Kontext verwendet wird. Als dieses entfernt wurde, lief das Programm auch unter MS-SQL 2000.
Hinweis
Falls ihr trotzdem die Fehlermeldung mit IDENTITY_INSERT auf ON habt, bzw. ihr habt kein ORDER BY im SQL-Query - so habe ich noch zwei Lösungen gefunden:
- Das Service Pack 4 ist noch nicht auf dem SQL-Server installliert.
- Die Wahrscheinlichere ist, dass ihr einer Spalte, die einen Autowert hat, einen Wert zuweisen wollt. Um das zu ermöglichen, müsst ihr vorher diesen SQL-Befehl einbauen:
Download Code!
IDENTITY_INSERT Tabelle ON