CasoNo se puede establecer IDENTITY_INSERT en lotes
Actualmente estoy trabajando en el guión de la siembra de la base de datos, ejecutado con sqlcmd
. Por ejemplo, este script de ejemplo:
IF (SELECT COUNT(*) FROM Genders)=0
BEGIN
PRINT N'Seeding table Genders...'
SET IDENTITY_INSERT Genders ON
GO
INSERT INTO Genders (GenderId, Description) VALUES (0, 'Onbekend');
INSERT INTO Genders (GenderId, Description) VALUES (1, 'Vrouw');
INSERT INTO Genders (GenderId, Description) VALUES (2, 'Man');
INSERT INTO Genders (GenderId, Description) VALUES (3, 'Onzijdig');
INSERT INTO Genders (GenderId, Description) VALUES (4, 'Vrouwman');
INSERT INTO Genders (GenderId, Description) VALUES (5, 'Manvrouw');
SET IDENTITY_INSERT Genders OFF
END
GO
Problema
Sin embargo, si ejecuto con sqlcmd
el modo en SQL Server Management Studio, me da este error:
Msg 102, Nivel 15, estado 1, línea 5 Sintaxis incorrecta cerca de 'ON'.
Msg 102, nivel 15, estado 1, línea 10 Sintaxis incorrecta cerca de 'END'.
Hago búsquedas en Google, pero no puedo entender lo que estoy haciendo mal. Sin IF/BEGIN/END si funciona, pero me gusta realizar primero el control.
Preguntas:
- Cualquier cosa que estoy haciendo mal?
- De ser imposible, ¿hay alguna solución disponible?
Gracias de antemano !!
Quitar ir después identity_insert conjunto (...) –
¿Funciona sin el 'GO'? –
Oh, eso fue estúpido ... funciona ahora, ¿por qué no es necesario el GO ahora? –