SQL Try-Catch Blocks가 Thrown CLR 오류를 처리 할 수 있습니까?
-
02-07-2019 - |
문제
우리는 SQL 2005와 Try-Catch 기능을 사용하여 DB 내의 모든 오류 처리를 처리하고 있습니다. 우리는 현재 DB에서 일부 WCF 호출을하기 위해 .NET CLR 기능을 배포하고 있습니다. 이 WCF 절차는 CLR에 작성된 다음 SQL에 배치됩니다. CLR 코드에 트리 캐치 블록을 넣으면 오류가 정상적으로 포착됩니다. 그러나 SQL의 Try-Catch 블록까지 오류를 던질 수는 없습니다. SQL은 내가 던지는 것을 무시하고 발견 된 오류를 포착하는 것 같습니다. 둘 사이에 관계가 없습니까 (즉, 서로에게 던질 수 없습니까?)
CLR 내에서 SQL의 호출 절차로 던질 수 있다면 특별 형식이 필요합니까? 나는 던져진 오류를 잡은 다음 다른 오류를 던지는 특정 사례를 시도했지만 SQL은 내 던진 오류를 무시하고 마치 버린 오류를 무시한 것처럼 원래 오류를 잡았습니다.
해결책
다음은 높은 수준의 블로그 게시물입니다.SQLCLR의 예외 처리
SQL Server가 CLR (IE, Managed Code)에서 구현 된 사용자 기능/프로 시저/트리거를 실행하면 사용자 코드 주변에 관리 된 예외 핸들러를 설치합니다. 따라서 사용자 코드가 예외를 유출하면 서버가이를 잡아서 사용자 예외를 래핑하는 TSQL 예외를 던집니다.
이것은 그것이 단지 작동한다는 것을 암시하는 것 같습니다.
제휴하지 않습니다 StackOverflow