2014-12-04 6 views
-1

SQL Azure에서 많은 양의 데이터를 검색 할 때 다음과 같은 오류가 발생합니다. 일시적 오류 처리를 이미 구현했지만 여전히이 오류가 발생합니다.대기 작업 시간 초과 Win32Exception (0x80004005) : 대기 작업 시간 초과 azure

설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.ComponentModel.Win32Exception는 :

처리되지 않은 예외가 현재 웹 요청을 실행하는 동안 생성되었습니다 대기 작업이

소스 오류를 시간이 초과되었습니다. 예외의 출처와 위치에 관한 정보는 아래의 예외 스택 추적을 사용하여 식별 할 수 있습니다.

스택 트레이스 :

[Win32Exception은 (0X80004005) 대기 동작이 초과]

[SQLEXCEPTION (0x80131904) 제한 시간이 만료. 작업 완료 또는 서버가 응답하지 않는 시간 초과 기간.] System.Data.SqlClient.SqlConnection.OnError (SqlException 예외, 부울 breakConnection, 동작 1 wrapCloseInAction) +1789270 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) +5340622 System.Data.SqlClient.TdsParser .ThrowExceptionAndWarning (TdsParserStateObject stateObj 부울 callerHasConnectionLock 부울 asyncClose) +244 System.Data.SqlClient.TdsParser.TryRun (RunBehavior runBehavior, SqlCommand를 cmdHandler, SqlDataReader의 데이터 스트림, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj 부울 & dataReady) 1,691 System.Data .SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +275 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBe 작업, & 작업, 부울 asyncWrite, SqlDataReader ds) +1421 System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String 메서드, TaskCompletionSource 1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +177 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource 완료 한 문자열 methodName로 부울 sendToPipe, INT32 타임 아웃 부울 asyncWrite) 208 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 163 System.Web.SessionState.SqlSessionStateStore.SqlExecuteNonQueryWithRetry (SqlCommand를 cmd를 부울 ignoreInsertPKException, 문자열 ID) +98

[HttpException (0x80004005) : SQL Server 세션 데이터베이스에 연결할 수 없습니다.] Syst em.Web.SessionState.SqlSessionStateStore.ThrowSqlConnectionException (도록 SqlConnection CONN, 예외 전자) 235 System.Web.SessionState.SqlSessionStateStore.SqlExecuteNonQueryWithRetry (하는 SqlCommand cmd를 부울 ignoreInsertPKException, 문자열 ID) 390 System.Web.SessionState.SqlSessionStateStore.SetAndReleaseItemExclusive (HttpContext 컨텍스트, 문자열 ID, SessionStateStoreData 항목, 개체 lockId, 부울 newItem) +589 System.Web.SessionState.SessionStateModule.OnReleaseState (Object source, EventArgs eventArgs) +565 System.Web.SyncEventExecutionStep.System.Web.HttpApplication. IExecutionStep.Execute() +136 System.Web.HttpApplication.ExecuteStep (IExecutionStep 단계, 부울 & 동기화 완료) +69

버전 정보 : Microsoft .NET Framework 버전 : 4.0.30319; ASP.NET 버전 : 4.0.30319.34,009

http://i.stack.imgur.com/8BloW.png

답변

0

SqlClient.SqlCommand 객체 속성 CommandTimeout이있다. 기본값은 30 (초)입니다. 이 값을 더 높은 값으로 설정해야합니다.

+0

동일 함 여전히 오류가 있습니다. –

0

아래 코드에서와 같이 시간 초과 값을 더 높게 설정하거나 제한 시간 값을 해제 할 수 있습니다. 데이터를 보유하는 객체가 2Gb를 초과하면 오류가 발생할 수 있습니다. 한 번에 작은 덩어리의 데이터를 가져 오도록 쿼리를 다시 설계하는 것이 좋습니다.

// I'm populating an ADO.Net DataTable for this demo but populate whatever object you'd like 
DataTable DtFromSQL = new DataTable(); 
SqlConnection myConnection = new SqlConnection("ConnectionString"); 
myConnection.Open(); 
SqlDataReader myReader = null; 
SqlCommand myCommand = new SqlCommand("enter some SQL query here", myConnection); 
// A CommandTimeout Value of 0 turns the timout off, otherwise you can set it to some value in seconds 
myCommand.CommandTimeout = 0; 
myReader = myCommand.ExecuteReader(); 
DtFromSQL.Load(myReader8); 
myConnection.Close(); 
DtFromSQL;