2

我有以下使用批处理文件运行的查询。在批处理文件中,我使用以下语法:

echo populating Application table with values...

SET "installFile=%sqlDir%\Install\DataFiles\Insert_ApplicationNames.sql"

OSQL /n /i "%installFile%" /d%db% /U%user% /P%pswd% /S%serv%
echo
echo populated Application table with values in Insert_ApplicationNames.sql
echo

下面显示的 sql 在从 SQL Management Studio 执行时运行时没有任何错误,但在作为批处理脚本的一部分运行时会一直出错。有人可以帮我找出我在这里可能做错了什么吗?

此外,确实插入了行,但由于批处理脚本引发的错误,我们的夜间 QA 安装中断。

IF NOT EXISTS(SELECT * FROM Application WHERE name = '')
BEGIN
    INSERT INTO Application
    (Name)
    VALUES
    ('')
END
GO
IF NOT EXISTS(SELECT * FROM Application WHERE name = 'App1.exe')
BEGIN
    INSERT INTO Application
    (Name)
    VALUES
    ('App1.exe')
END
GO
IF NOT EXISTS(SELECT * FROM Application WHERE name = 'App2.exe')
BEGIN
    INSERT INTO Application
    (Name)
    VALUES
    ('App2.exe')
END
4

2 回答 2

2

GO是 Management Studio 中的(默认)批处理分隔符关键字,但它不是真正的SQL 关键字(即 SQL Server 无法识别它)。

从你的脚本中删除那些——在你提供的脚本中,它们无论如何都无关紧要——你应该很好,嗯,去吧。

于 2011-05-08T19:03:59.033 回答
0

好奇你的变量是否应该与开关相匹配。试试这个?

OSQL -n -i "%installFile%" -d %db% -U %user% -P %pswd% -S %serv%

当您在命令中使用上面的行和您已知的良好值时会发生什么?

OSQL -n -i "C:\foo.sql" -d MyDB -U MyUser -P MyPwd -S MyServ
于 2011-05-06T18:52:03.620 回答