2017-03-07 30 views
2

複数の:CONNECTステートメントをT-SQLスクリプト内で実行すると、接続に失敗した場合、残りのスクリプトは実行されません。SQLCMD接続エラー処理

接続エラーを処理するTry/Catchブロックとして機能するSQLCMDコマンドがいくつかありますか?私は、SQLコードの前にSQLCMDコマンドが実行されているため、T-SQL試行/キャッチが有効ではないことを認識しています。

答えて

1

バッチファイルにsqlcmdコードを入れてから、バッチファイル(hereのように)を実行できます。

接続するサーバーを指定するには、オプション-Sを使用し、TSQLコードを指定する場合は、オプション-Qを使用します(詳細はMSDNを参照)。例えば

sqlcmd -S WrongServerName -Q "select @@servername" 
sqlcmd -S CorrectServerName -Q "select @@servername" 

pause 

最初のコマンドは、(WrongServerNameが存在しないか、オフラインサーバである場合)は、第2の一つが実行されている間(CorrectServerNameがオンラインサーバである場合)、失敗し、戻りますサーバーの名前。

+0

ありがとうございます。バッチファイル以外のソリューションはありますか?私が尋ねる理由は、スクリプトがテーブル内の列から取得され、複数のサーバーを経由する1つの大きなスクリプトを作成するために一緒に結合されていることです。 –

+1

@RyanGilloolyはい、私はあなたのポイントを見ます: SQLCMDでのエラー処理の高度なメカニズム私は単純なTSQL命令を実行するので、この方法を使用します。バッチファイルは私にとっては良い解決策です。複雑なスクリプトを実行する必要がある場合、この解決法はおそらく不十分であると私は理解しています。私はかつてERRORLEVEL変数について読んでいましたが、DOSコマンドによって返されるエラーだけを処理すると思います。私はあなたをさらに助けることができません申し訳ありません。 – Andrea

関連する問題