8

案子

目前我正在研究数据库种子脚本,使用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 如果确实有效,但我喜欢先执行检查。

问题:

  • 有什么我做错了吗?
  • 如果不可能,有任何可用的解决方法吗?

提前致谢!!

4

1 回答 1

6

你不能有GOinsideBEGINEND。尝试关注

SET IDENTITY_INSERT Genders ON

IF (SELECT COUNT(*) FROM Genders)=0
BEGIN
   PRINT N'Seeding table Genders...'

   INSERT INTO Genders ...

END

SET IDENTITY_INSERT Genders OFF
GO
于 2012-03-22T09:30:39.860 回答