sqlcmd を介して 15 の SQL Server に接続し、t-sql クエリの出力を HTML 形式の出力ファイルに保存する小さなバッチ ファイルを作成しました。すべての SQL Server が稼働している場合、スクリプトは正常に実行されますが、いずれかの SQL Server がダウンしている場合は常に、次のエラーが出力ファイルに保存されます - "HResult 0xFFFFFFFF, Level 16, State 1 SQL Server Network Interfaces: Error Locating Server/Instance [xFFFFFFFF]を指定しました。」
このようなあいまいなエラーを書く代わりに、IF ELSE を使用して接続失敗のエラー ハンドラーも記述しようとしましたが、うまくいきませんでした。助けが必要です。
エラー処理 (SQL インスタンスがダウンしている場合) のために記述しようとしたコードの一部は次のとおりです。入力テキスト ファイルには、すべての SQL サーバーに対して次の 2 つの値が含まれています --> SQLinstancename,Application name
FOR /F "tokens=1,2 delims=," %%G in (%CD%\SQLServerList_SQLReport.txt) DO (
sqlcmd -E -S %%G -q "exit(select @@servername)"
IF ERRORLEVEL==0 (
sqlcmd -E -S %%G -i %MainSCRIPT% -v appname = "%%H" >> %HTMLFILE%
) ELSE (
ECHO "<tr><tr rowspan=1><td align=center bgcolor = gray rowspan=1><b><font face=verdana color=white size=1>%%H</font></b></td>" >> %HTMLFILE%
ECHO "<td align=center rowspan=1><font face=verdana size=1>%%G</font></td>" >> %HTMLFILE%
ECHO "<td align=center colspan =6 rowspan=1><font face=verdana size=1 color=RED><b>Unable to connect to SQL Server, check the connectivity*</b></font><tr></tr><tr></tr>" >> %HTMLFILE%
))