2009-02-04 2 views

ответ

3

В теории, на основе образца кода я получил от одного из наших разработчиков:

try 
{ 
    response = service.ProcessThisInfo(info); 
} 
catch (Exception ex) 
{ 
     returnCode = Convert.ToInt32(ErrorEnum.SomeError); 
     string msg = string.Format("RAISERROR('{0}',16,1)", ex.Message.Replace('\'', ' ')); 
     SqlCommand cmd = new SqlCommand(msg, connection); 
     try 
     { 
      SqlContext.Pipe.ExecuteAndSend(cmd); 
     } 
     catch { } // stop duplicate exception throwing... 
} 

In practise, maybe not Это вопрос в SQL 2005

0

Я думаю, вы просто получить неприятную ошибку, если вы попытаетесь это сделать , Существует интересный пример для SqlContext.Pipe.ExecuteAndSend (cmd) в MSDN по адресу http://msdn.microsoft.com/en-us/library/ms255336(VS.80).aspx. Он не работает без изменений, и если вы измените его на отправку raiserror, он будет выполняться по умолчанию и отправит вам сообщение NET Exception. Вы не можете сделать это с помощью функции.

Что касается исходного вопроса, я бы сказал, что это (повышение ошибки SQL Server из функции CLR) было невозможно в SQL Server 2005, но может быть выполнено с помощью процедуры CLR.

+0

Beauchemin and Sullivan в своей книге «Руководство для разработчиков по SQL Server 2005» на стр. 148 показывают, как это сделать в процедуре CLR –

Смежные вопросы