我有一个存储过程,它提供了一个足够友好的错误,我想向用户显示,但是当我从.net 调用它时,它会出现两次。当我从 sql server management studio 调用 proc 时,它只出现一次。
这是存储过程的缩减版本:
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错误发现:坏事正在发生。”
有谁知道它出现两次的原因?
这是在 sql server 2008 和 .net 3.5 上