ユーザーに表示したい十分にわかりやすいエラーを提供するストアドプロシージャがありますが、.netから呼び出すと2回表示されます。SQL Server Management Studioからprocを呼び出すと、1回だけ出力されます。
ストアドプロシージャの縮小版は次のとおりです。
ALTER PROC [Production].[spDoSomething] (
@PassedID int)
AS
BEGIN
DECLARE @ErrorString nvarchar(500);
BEGIN TRY
...
RAISERROR('Bad things are happening.', 11 /*severity*/, 1 /*state*/);
...
END TRY
BEGIN CATCH
SET @ErrorString = 'Error found:' + ERROR_MESSAGE();
PRINT @ErrorString;
RAISERROR(@ErrorString, 11 /*severity*/, 1 /*state*/);
END CATCH
END
ExecuteNonQuery()
オブジェクトを使用していくつかのc#コードでこれを呼び出し、System.Data.SqlClient.SQLCommand
キャッチしますSystem.Data.SqlClient.SQLException
が、メッセージには次のものが含まれます
「エラー:検出された悪いことが起こっています。\ nエラーが見つかりました:悪いことが起こっています。」
二度出てくる理由を知っている人はいますか?
これはSQLServer2008および.net3.5にあります