SQL 프로 시저를 실행하려고 할 때 SqlException이 발생하고 Number가 0이 될 수 있습니까?SqlException이 throw되고 property Number == 0 일 가능성이 있습니까?
특정 상황 : 도메인 컨트롤러를 사용할 수 없거나 응답하지 않고 SQL Server와의 실제 통신이 발생하지 않았습니다. SqlException.Number
다음과 같은 경우를 제외하고, 0이라고
SQL 프로 시저를 실행하려고 할 때 SqlException이 발생하고 Number가 0이 될 수 있습니까?SqlException이 throw되고 property Number == 0 일 가능성이 있습니까?
특정 상황 : 도메인 컨트롤러를 사용할 수 없거나 응답하지 않고 SQL Server와의 실제 통신이 발생하지 않았습니다. SqlException.Number
다음과 같은 경우를 제외하고, 0이라고
아니, 그것은 불가능합니다
을 만들 수 없습니다 SQL Server 2016의 읽기 전용 라우팅을 사용하면 설명 된 시나리오에 이러한 사례가 적용되지 않을 수 있습니다.
나머지 케이스는 sysmessages
에서 0이 아닌 숫자이거나 0 == ERROR_SUCCESS
부터 0이 아니기 때문에 Win32 오류 코드입니다.
실제로 "SSPI 컨텍스트를 만들 수 없습니다."또는 "서버에 요청을 전송할 때 전송 수준 오류가 발생했습니다."또는 "기존 연결이 강제로 닫혔습니다. 원격 호스트 "이며, 이들도 0이 아닌 Win32 오류 코드를 가지고 있습니다.
참조 : https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlerror.number(v=vs.110).aspx
그것은 SqlException.Number
가 Errors
배열의 첫 번째 항목의 Number
속성에 대한 동의어이며, 그 배열이 하나 개 이상의 항목을 포함 할 수 있음을 주목할 필요가있을 수 있습니다.
내 질문에 답하십시오. 예, 가능합니다. 잡는 코드를 추가했습니다 :
catch (SqlException ex)
{
for (int i = 0; i < ex.Errors.Count; i++)
{
this.logger.Error("Index #" + i + "\n" +
"Message: " + ex.Errors[i].Message + "\n" +
"Error Number: " + ex.Errors[i].Number + "\n" +
"LineNumber: " + ex.Errors[i].LineNumber + "\n" +
"Source: " + ex.Errors[i].Source + "\n" +
"Procedure: " + ex.Errors[i].Procedure + "\n");
}
if (ex.Number == 0)
{
this.logger.Warn("Exception was caught but ex.Number == 0! Changing to -69.");
oResults.Add("_ExitCode", "-69");
}
}
오늘 기록했습니다.
2017-01-17 08:05:08,282 [r074008903] ERROR ProcessLogger Index #0
Message: A severe error occurred on the current command. The results, if any, should be discarded.
Error Number: 0
LineNumber: 0
Source: .Net SqlClient Data Provider
Procedure:
2017-01-17 08:05:08,282 [r074008903] ERROR ProcessLogger Index #1
Message: A severe error occurred on the current command. The results, if any, should be discarded.
Error Number: 0
LineNumber: 0
Source: .Net SqlClient Data Provider
Procedure:
2017-01-17 08:05:08,283 [r074008903] WARN ProcessLogger Exception was caught but ex.Number == 0! Changing to -69.
_ExitCode를 사용하여이 특정 상황에서 잘못된 것이 있는지 확인하기 때문에 잘못된 정보가 있습니다.
https : //msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlerror.number (v = vs.110) .aspx – TheGameiswar
및 https : // msdn을 확인하십시오. microsoft.com/en-us/library/system.data.sqlclient.sqlexception.number(v=vs.110).aspx – TheGameiswar
이전에 SqlConnection을 열었을 때 연결이 끊어 졌음을 의미합니까? 이 경우 클라이언트 구성 요소는 "전송 레벨 오류가 발생했습니다 ..."메시지를 던지므로 해당 예외에는 숫자 (19 - 실제 연결을 사용할 수 없음)가 있습니다. 숫자 * = 0 인 오류 상태가 정의되어 있습니다. – dlatikay