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 に答える