0

SQL Server Express 2008デバッガには新しく追加されたものです。SQL Server Express 2008でスクリプトまたはストアドプロシージャをデバッグ中にエラーを表示する方法

ここで何が起こりますか。たとえば、私が4つの削除ステートメントでprocを保存し、2つ目の削除が他のテーブルでFK違反の結果になったとします。 spを実行してメッセージタブ(結果タブの横にある)に移動すると、fk違反エラーが赤色で表示されます。

しかし、私がspに入って行ごとに行くと、ライブエラー表示はありません。基本的には、spに入るとメッセージタブは表示されません。コールスタックウィンドウ、ウォッチウィンドウ、ブレークポイントウィンドウなどが表示されます。try catchまたは古典的なif (@@errror) goto thereタイプの行がないため、エラー処理を行うことはおそらくデバッガでも正しく検出されます。

私はエラー処理を行う予定ですが、今のところ私の質問はデバッガの使用に関係しています。デバッガを停止するとすぐに[メッセージ]タブが表示され、fk違反が表示されます。 デバッガを停止するのを待つのではなく、エラーが生きているのを確認する方法?ありがとうございました

答えて

1

私はtry catchステートメントに入れて、エラーメッセージを自動インクリメントシーケンス番号を持つ別のテーブルに記録します。次に、その中から選択して、どのエラーメッセージとその順序を確認することができます。

例:

CREATE TABLE trackedErrors (
     sequence int not null identity(1,1) primary key 
    , message varchar(max) 
) 
GO 

BEGIN TRY 
    --dangerous sql 
    SELECT 5/0 
END TRY 
BEGIN CATCH 
    --log error 
    INSERT INTO trackedErrors(message) 
    VALUES (ERROR_MESSAGE()) 
END CATCH 

あなたはERROR_MESSAGE以外のエラー情報をより多くを行うことができます()。 TRY-CATCH documentationを参照してください。

+0

例外が処理されない場合、デバッグ中のビジュアルスタジオでは、それをキャッチしてエラーを表示します。私はこのような解決策を探しています。 (多分いくつかのハックやレジストリの修正など)。基本的には、デバッグ中は、表示した通りに処理しない限り、エラーが発生している兆候はありません。ありがとう – Gullu

+0

ストアドプロシージャは、エラーが発生しても実行を継続し、Visual Studioは最新のエラーのみを報告します。私のソリューションを使用することで、SQL Server Management Studioで、テーブルから選択してエラーの発生を確認できます。デバッガでエラーが表示された場合は、ストアドプロシージャの最後に新しく追加されたエラーを選択し、エラーメッセージを作成してRAISERRORを呼び出す余分なロジックをソリューションに追加できます。 – Zugwalt

+0

私は、ハックや回避策がなければ、あなたのソリューションが好きです。それであなたの答えを投票してください。 VSのような最新のエラーを見ることができても、私は満足しています。誰でも ?ありがとう – Gullu

関連する問題