0

SQL Server 데이터베이스에 쿼리를 전달하고 결과를 datviewgrid에 표시하는 C#으로 작성된 Windows 양식 응용 프로그램이 있습니다. 데이터베이스로 전달되는 쿼리는 양식에서 선택한 옵션에 따라 다릅니다.C#의 SQL Server TimeOut 조정 후 제한 시간

하나의 특정 쿼리는 관리 스튜디오에서 실행될 때까지 잠시 시간이 걸리지 만 프로그램에서 데이터베이스로 전달되는 경우 시간 초과가 발생합니다.

  1. 추가 된 SQL 연결 문자열 300 초 연결 시간 제한 옵션을 설정하여 프로그램의 5 분의 시간 제한 : 여기에 내가 상황 해결을 위해 수행 한 단계입니다. 예 : Data Source=ab;Initial Catalog=abc;User ID=user; Password =pw; Connection Timeout=300

  2. SQL Server 인스턴스의 원격 쿼리 시간 초과를 0 (즉, 제한 시간 없음)으로 설정합니다. 예 : EXEC sp_configure 'remote query timeout', 0 ; GO

이 두 가지 옵션 중 어느 것도 작동하지 않습니다. 두 가지 모두를 구현 했음에도 불구하고 C# 프로그램은 1 분 이내에 SQL 시간 초과 오류를 반환합니다.

해결 방법이 있습니까? 스택 오버플로에 대해이 항목을 검색했으며 지금까지 제안 사항 중 1 ~ 2 개를 수행했습니다.

참고로 Visual Studio 17 Community Edition과 SQL Server 2016 Developer Edition을 사용하고 있습니다.

도움을 주시면 감사하겠습니다.

감사합니다.

답변

1

연결 시간 초과명령 시간 초과은 두 가지입니다.

연결 시간 초과은 할당 된 시간 초과 기간 내에 연결 풀에서 연결을 검색 할 수 없을 때 발생합니다.

명령 시간 초과은 연결이 검색되었을 때 발생하지만이 명령에 대해 실행되는 쿼리는 할당 된 명령 시간 제한 기간 내에 결과를 반환하지 않습니다. ADO.NET의 기본 명령 시간 초과 기간은 30 초입니다.

연결 시간 제한을 300 초로 설정했지만 여전히 시간 초과가 발생하면 명령 시간 초과가 발생할 가능성이 있습니다. walkers01에서 말한대로 명령 시간 초과를 적절한 초 수로 설정하십시오. 300 초가 충분해야합니다. 쿼리가 SSMS에서 1 분 안에 실행되면 90 초의 시간 만 있으면 충분합니다.

4

SQL 명령에 "CommandTimeout"속성이 있습니다. 설정해보십시오.