21

SQLCMDユーティリティを介して実行されたクエリの終了ステータス(成功/失敗)を確認する必要があります。たとえば、接続しているサーバーにデータベース名がありませんEastWind。次に、以下のコマンドは次のメッセージで失敗します...

> "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" 
     -S ZEPHIR -E -Q "USE WestWind"
Changed database context to 'WestWind'.
> echo %errorlevel%
0
> "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" 
     -S ZEPHIR -E -Q "USE EastWind"
Database 'EastWind' does not exist. Make sure that the name is entered correctly
> echo %errorlevel%
0

どちらの場合も戻り値は同じであることがわかります。コマンドが失敗したかどうかを確認するにはどうすればよいSQLCMDですか?

4

2 に答える 2

31

オプションを使用する必要があります-V

注:これは大文字-Vであり、小文字ではありません-v

例:

> SQLCMD.EXE -S whatever -E -V16 -Q "USE does_not_exist"
  Msg 911, Level 16, State 1, ...
  Could not locate entry ...
> echo %ERRORLEVEL%
  16

更新:または、実行とは異なるセマンティクスを持つオプションを使用できます-b(最初のエラーでバッチ全体が停止します)。YMMV。

例:

> SQLCMD.EXE -S whatever -E -b -Q "USE does_not_exist"
  Msg 911, Level 16, State 1, ...
  Could not locate entry ...
> echo %ERRORLEVEL%
  1

-bとを組み合わせることもできます-V

于 2011-03-24T13:50:18.410 に答える
2

よくわかりませんが、SQLCMD -m スイッチを試しましたか? sqlcmd ユーティリティ

-m error_level- stdout に送信されるエラー メッセージを制御します。このレベル以上の重大度を持つメッセージが送信されます。この値を に設定すると-1、情報メッセージを含むすべてのメッセージが送信されます。-mとの間にスペースを入れることはできません-1。たとえば、-m-1有効で無効です-m -1

于 2011-03-24T12:08:43.043 に答える