2008-08-26 1 views
24

실행하려는 SQL 문이 오래 실행되었으며 연결 문자열의 "timeout ="절에 상관없이 항상 30 초 후에 끝나는 것처럼 보입니다.연결 문자열에서 시간 초과가 적용되지 않습니다.

난 그냥 그것을 실행하는 SqlHelper.ExecuteNonQuery()을 사용하고 개방 연결 알아서시키는 등

을 거기 내 타임 아웃을 대체 할 수있는 다른 뭔가를, 또는 SQL 서버가 무시하는 원인거야? 나는 프로파일 러를 쿼리를 통해 실행했으며 트레이스는 관리 스튜디오에서 실행할 때와 내 코드에서 다르게 보이지 않습니다.

관리 스튜디오는 약 1 분 안에 쿼리를 완료하지만 타임 아웃을 300 또는 30000으로 설정하더라도 30 초 후에 코드가 여전히 시간 초과됩니다.

답변

38

연결 문자열에 시간 초과를 설정하는 데 사용하고 계신 것은 무엇입니까? 메모리에서 "ConnectionTimeout"이며 실제로는 에 걸리는 시간에만 영향을 미치며을 서버에 연결합니다.

각 개별 명령에는 사용자가 찾고자하는 별도의 "CommandTimeout"이 있습니다. SqlHelper가 어떻게 구현하는지 잘 모르겠습니다.

+1

너무 분명합니다! 하지만 그 대답은 두 시간을 낭비하는 것을 막지 못했습니다 .... 감사합니다! – Aaron

14

연결 문자열의 시간 초과 외에 SQL 명령의 timeout 속성을 사용해보십시오. 아래는 SqlCommand 클래스를 사용하는 C# 샘플입니다. 그와 동등한 것이 당신이 사용하는 것에 적용되어야합니다.

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection); 
command.CommandTimeout = 0; 
int rows = command.ExecuteNonQuery();