문제

특별히 SQL 서버 시간 초과 예외를 포착하여 다르게 처리 할 수 있도록해야합니다.SqlException을 잡은 다음 메시지 문자열에 "Timeout"이 포함되어 있는지 확인할 수 있지만 더 나은 방법이 있는지 궁금합니다. 라코 디스

도움이 되었습니까?

해결책

시간 초과를 확인하려면 ex.Number의 값을 확인해야합니다.-2이면 타임 아웃 상황입니다.

-2는 SQL Server 용 MDAC 드라이버 인 DBNETLIB에서 반환 된 시간 초과 오류 코드입니다. Reflector 를 다운로드하고 System.Data.SqlClient.TdsEnums 아래에서 확인할 수 있습니다.TIMEOUT_EXPIRED 동안.

코드는 다음과 같습니다. 라코 디스

실패를 나타내는 코드 : 라코 디스

다른 팁

여기 : http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.adonet/2006-10/msg00064.html

Thomas Weingartner 가 쓴 내용도 읽을 수 있습니다.
<인용구>

시간 초과 : SqlException.Number== -2 (이것은 ADO.NET 오류 코드입니다)
일반 네트워크 오류 : SqlException.Number== 11
Deadlock : SqlException.Number== 1205 (SQL Server 오류 코드)

...
<인용구>

'일반 네트워크 오류'도 시간 초과 예외로 처리합니다.드문 상황에서만 발생합니다.업데이트 / 삽입 / 삭제 쿼리가 장기 실행 트리거를 발생시킬 때

C # 6 용으로 업데이트되었습니다. 라코 디스

매우 간단하고보기에 좋습니다 !!

SqlException.ErrorCode 속성의 값은 무엇입니까?그것으로 작업 할 수 있습니까?

시간 제한이있는 경우 -2146232060 의 코드를 확인하는 것이 좋습니다.

이것을 데이터 코드에서 정적 const로 설정하겠습니다.

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