Невозможно установить IDENTITY_INSERT в пакетном режиме

Case

В настоящее время я работаю над сценарием заполнения базы данных, выполняемым с помощью sqlcmd. Например, этот пример сценария:

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

Проблема

Однако, если я выполняю его в режиме sqlcmd в SQL Server Management Studio, он выдает следующие ошибки:

Сообщение 102, уровень 15, состояние 1, строка 5 Неверный синтаксис рядом с «ON».

Сообщение 102, уровень 15, состояние 1, строка 10 Неверный синтаксис рядом с 'END'.

Погуглил, но не могу понять, что я делаю не так. Без IF/BEGIN/END if работает, но мне нравится сначала выполнять проверку.

Вопросы:

  • Я что-то не так делаю?
  • Если это невозможно, какой обходной путь доступен?

Заранее спасибо!!

5
задан Herman Cordes 22 March 2012 в 09:27
поделиться