2

Try/Catch でバックアップ データベース コマンドをカプセル化しましたが、エラー メッセージがどこかで失われているようです。例えば:

BACKUP DATABASE NonExistantDB TO DISK = 'C:\TEMP\NonExistantDB.bak'

..エラーが発生します:
データベース '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 の制限ですか?

4

2 に答える 2

3

これは、try/catch の制限です。

実行によって生成されたエラーを注意深く見ると

 BACKUP DATABASE NonExistantDB TO DISK = 'C:\TEMP\NonExistantDB.bak'

2 つのエラーがスローされることがわかります。1 つ目はメッセージ 911 で、次のように述べています。

データベース 'NonExistantDB' の sysdatabases にエントリが見つかりませんでした。その名前のエントリは見つかりませんでした。名前が正しく入力されていることを確認してください。

2 番目は、表示している 3013 メッセージです。基本的に、SQL は最後のエラーのみを返します。

于 2008-10-21T15:22:12.797 に答える
0

これは、SQL 2005 の try/catch ブロックの制限です。2008 年にまだ存在するかどうかはわかりません。

SQL 2005 エラー処理

于 2010-07-06T20:23:58.657 に答える