我使用批处理文件运行以下查询。在批处理文件中,我使用以下语法:
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 Management Studio执行时,下面显示的sql运行时没有任何错误,但是当作为批处理脚本的一部分运行时,它会一直出错。有人可以帮我找到我在这里做错的事吗?
此外,行会插入,但由于批处理脚本引发的错误,我们每晚的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
答案 0 :(得分:2)
GO
是Management Studio中的(默认)批处理分隔符关键字,但它不是真正的 SQL关键字(即,SQL Server无法识别它)。
从你的脚本中删除那些 - 在你提供的脚本中,它们无论如何都是无关紧要的 - 你应该好好,嗯,去吧。
答案 1 :(得分: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