Msg 102,Level 15,state 1 Line 1'n'附近的语法不正确

时间:2011-05-06 18:26:53

标签: sql sql-server tsql syntax-error osql

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

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

2 个答案:

答案 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