У меня есть хранимая процедура, которая дает достаточно дружественную ошибку, которую я хочу показать пользователям, но когда я вызываю ее из .net, она выходит дважды. Когда я вызываю proc из sql server management studio, он выходит только один раз.
Вот сокращенная версия сохраненного процесса:
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
Я вызываю это в некотором коде c #, используя ExecuteNonQuery()
объекта System.Data.SqlClient.SQLCommand
, затем ловлю System.Data.SqlClient.SQLException
, но Сообщение содержит
«Ошибка: найдено. Плохое происходит. \ NОшибка найдено: происходит плохое».
Кто-нибудь знает причину, почему она выходит дважды?
Это на sql server 2008 и .net 3.5