2009-10-29 3 views
2

SqlClient.SqlCommand 개체를 사용하여 db에 저장된 procs 몇 개를 실행하고 있습니다. 일반적으로 쿼리 분석기를 통해 수동으로 실행하면 완료하는 데 최대 15 분이 소요됩니다.SqlCommand 개체 - 그것을 설정하고 잊어 버리시겠습니까?

그래서 분명히 SqlCommand 개체를 사용하여 실행하면 SqlCommand 시간 초과가 발생합니다.

나는 타임 아웃 속성을 매우 높은 수로 설정할 수 있음을 알고 있지만 procs를 시작하고 연결을 끊는 방법이 있는지 궁금해하고 있습니다. 나는 반환 가치가 필요하지 않습니다.

제안 사항? 각 SP의 처리 시간을 최적화하는 데 관심이 없으며 '설정하고 잊어 버렸습니다'옵션이 있는지 확인하려고합니다.

using (SqlCommand cmd = new SqlCommand(@"update tbl_SYS_DATE set RPT_DATE = @inputDate 
                exec sp_Get_Bp_Data1 
                exec sp_Get_Bp_Data2   
                exec sp_Get_Bp_Data3 
                exec sp_channel_data1 
                exec sp_channel_data2 
                exec sp_channel_data3 
                ", con)) 

답변

5

BeginExecuteNonQuery와 같은 비동기 메서드를 사용할 수 있습니다. 타임 아웃은 무시됩니다.

+0

+1 - 22 초에 나를 이길 수는 있지만 실제로 누가 이겼습니까? :-)) –

+0

물론 답장을하기 위해 그 페이지를 읽었습니다. :) – Jason

+0

이 메서드를 사용하는 경우 SqlConnection을 using 절에 넣지 마십시오. 그렇지 않으면 명령 실행이 완료되기 전에 연결이 삭제됩니다. – Aheho

0

당신은 백그라운드 스레드에서 해당 코드를 실행할 수 있습니다 :

다음은 SqlCommand 개체의 내용입니다. BackgroundWorker 개체를 살펴볼 수 있습니다.

4

비동기 메서드 호출 BeginExecuteNonQuery를 사용하십시오. the MSDN page

CommandTimeout 속성은 BeginExecuteReader와 같은 비동기 메서드 호출 중에 무시됩니다.

관련 문제