SQL Server 2005-完全なメッセージが表示されないError_Message()
-
03-07-2019 - |
質問
Try / Catchにバックアップデータベースコマンドをカプセル化しましたが、エラーメッセージがどこかで失われているようです。例:
BACKUP DATABASE NonExistantDB TO DISK = 'C:\TEMP\NonExistantDB.bak'
.. givesエラー:
データベース 'NonExistantDB'のsysdatabasesにエントリが見つかりませんでした。その名前のエントリは見つかりませんでした。名前が正しく入力されていることを確認してください。 BACKUP DATABASEは異常終了しています。
理由:
BEGIN TRY
BACKUP DATABASE NonExistantDB TO DISK = 'C:\TEMP\NonExistantDB.bak'
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
END CATCH
...エラーのみが表示されます: BACKUP DATABASEは異常終了します。
完全なエラーメッセージを取得する方法はありますか、これはtry / catchの制限ですか?
解決
try / catchの制限です。
実行により生成されたエラーを注意深く見ると
BACKUP DATABASE NonExistantDB TO DISK = 'C:\TEMP\NonExistantDB.bak'
2つのエラーがスローされることがわかります。 1つ目はmsg 911です。
データベース 'NonExistantDB'のsysdatabasesにエントリが見つかりませんでした。立入り禁止 その名前で見つかりました。名前が正しく入力されていることを確認してください。
2番目は、表示している3013メッセージです。基本的に、SQLは最後のエラーのみを返します。
他のヒント
これは、SQL 2005のtry / catchブロックの制限になりました。2008年にまだ存在するかどうかはわかりません。
所属していません StackOverflow