문제

우리는 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 예외를 던집니다.

이것은 그것이 단지 작동한다는 것을 암시하는 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top