Могут ли блоки SQL Try-Catch обрабатывать возникающие ошибки CLR?

StackOverflow https://stackoverflow.com/questions/122739

  •  02-07-2019
  •  | 
  •  

Вопрос

Мы используем SQL 2005 и функцию try-catch для обработки всех ошибок в базе данных.В настоящее время мы работаем над развертыванием функции .NET CLR для выполнения некоторых вызовов WCF в БД.Эта процедура WCF записывается в среде CLR, а затем развертывается в SQL.Если я добавлю блок try-catch в код CLR, он отлично отловит ошибку.Однако я не могу передать ошибку в блок try-catch в SQL.SQL, похоже, игнорирует то, что я ему выдаю, и перехватывает найденную ошибку.Нет ли между ними никакой связи (т.Я не могу перекинуться с одного на другое?)

Если я могу выполнить вызов из CLR в вызывающую процедуру в SQL, нужно ли какое-либо специальное форматирование?Я попробовал конкретный случай перехвата выданной ошибки, а затем выдачу другой ошибки, но SQL проигнорировал мою выброшенную ошибку и перехватил исходную ошибку, как если бы он игнорировал выброшенную ошибку.

Это было полезно?

Решение

Вот сообщение в блоге, которое освещает это на высоком уровне:Обработка исключений в SQLCLR

Когда SQL-сервер выполняет пользовательскую функцию/процедуру/триггер, реализованную в CLR (т. е. управляемый код), мы устанавливаем управляемый обработчик исключений вокруг пользовательского кода.Таким образом, если пользовательский код выдал исключение, сервер перехватит его и выдаст исключение TSQL, обертывающее пользовательское исключение.

Кажется, это означает, что это просто сработает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top