@ECHO --- 03_Case6395_Publication.sql --- >> dbupt.log
sqlcmd -U %1 -P %2 -S %3 -d %4 -i 03_Case6395_Publication.sql -k -b >> dbupt.log
IF ERRORLEVEL 1 GOTO ErrorTag
脚本运行时不会出错,但实际上不会影响数据库。在上面的示例中,下面是运行的内容:
IF NOT EXISTS (SELECT 1 FROM [dbo].[syscolumns] WHERE [NAME] = N'MandatoryInList' AND [ID] = object_id(N'Pub_Type'))
BEGIN
ALTER TABLE [dbo].[Pub_Type] ADD [MandatoryInList] bit NULL CONSTRAINT [DF_PubType_MandatoryInList] DEFAULT (0)
END
ELSE
BEGIN
ALTER TABLE [dbo].[Pub_Type] ALTER COLUMN [MandatoryInList] bit NULL
END
GO
脚本非常简单,您可能希望它添加一个名为MandatoryInList的列,但它没有。奇怪的是脚本中没有语法错误,当我从SQL Server Management Studio运行它时,它运行得很好。权限或哪个用户正在运行脚本没有问题,因为批处理文件中还有其他脚本可以正常运行。
我还应该提到,这是通过创建一个新进程并运行它(但不显示命令窗口)从GUI运行的。但不管怎样,我已经像这样运行了几个月没有任何问题的工具。