所以我们有一个运行 SQL 脚本的 .bat 文件,例如
@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 运行的。但无论如何,我几个月来一直在运行这样的工具,没有任何问题。
有任何想法吗?