質問

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年にまだ存在するかどうかはわかりません。

SQL 2005エラー処理

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top