Обработка ошибок CLR подпрограмм - PullRequest
0 голосов
/ 04 февраля 2009

Как вызвать событие ошибки SQL Server (аналогично RAISERROR) из подпрограммы SQL CLR?

Ответы [ 2 ]

3 голосов
/ 04 февраля 2009

Теоретически, на основе примера кода, который я получил от одного из наших разработчиков:

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...
}

На практике, возможно, нет Это проблема в SQL 2005

0 голосов
/ 02 марта 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...