본문 바로가기
프로그래밍/DB

SQL Server에서 연결된 서버 쿼리를 실행하면 "Timeout Expired"라는 오류 메시지가 나타난다

by Super User 2018. 4. 3.

SQL Server에서 연결된 서버 쿼리를 실행하면 "Timeout Expired"라는 오류 메시지가 나타난다


현상


연결된 서버 쿼리를 실행하면 다음과 같은 오류 메시지 중 하나가 나타날 수 있습니다.

서버: 메시지 7399, 수준 16, 상태 1, 줄 1 OLE DB 공급자 'SQLOLEDB'이(가) 오류를 보고했습니다. [OLE/DB provider returned Timeout expired]
또는
서버: 메시지 7399, 수준 16, 상태 1, 줄 1 OLE DB 공급자 'SQLOLEDB'이(가) 오류를 보고했습니다. 리소스 한도에 도달했기 때문에 공급자가 실행을 종료했습니다. [OLE/DB provider returned message: Timeout expired]
오류 7399는 공급자가 반환하는 일반 오류 메시지로 몇 가지 종류의 문제가 있음을 나타냅니다. 공급자로부터 보다 상세하고 유용한 오류 메시지를 가져오려면 추적 플래그 7300을 사용해야 합니다. 추적 플래그 7300의 출력은 사용자에게 나타나는 특정 오류 메시지 7399를 이 문서에서 다루는지 여부를 확인하는 데 도움이 될 수 있습니다.

DBCC TRACEON (7300, 3604) 문을 실행한 다음 쿼리를 실행하면 오류 메시지에 자세한 정보가 나타날 수 있지만 자세한 정보가 나타나는지 여부는 사용하고 있는 공급자에 따라 달라집니다. 예를 들면 다음과 같습니다.

서버: 메시지 7399, 수준 16, 상태 1, 줄 1 OLE DB 공급자 'SQLOLEDB'이(가) 오류를 보고했습니다. [OLE/DB provider returned message: Timeout expired] OLE DB 오류 추적 [OLE/DB Provider 'SQLOLEDB' IDBInitialize::Initialize returned 0x80004005: ].
또는
서버: 메시지 7399, 수준 16, 상태 1, 줄 1 OLE DB 공급자 'SQLOLEDB'이(가) 오류를 보고했습니다. 리소스 한도에 도달했기 때문에 공급자가 실행을 종료했습니다. [OLE/DB provider returned message: Timeout expired] OLE DB 오류 추적 [OLE/DB Provider 'SQLOLEDB' IDBInitialize::Initialize returned 0x80004005: 리소스 한도에 도달했기 때문에 공급자가 실행을 종료했습니다.]

원인


원격 쿼리의 실행에 영향을 미치는 구성 가능한 제한 시간 옵션이 두 가지 있습니다. 쿼리가 제한 시간 옵션 값을 초과하면 오류 메시지가 발생합니다. 제한 시간 옵션에 대한 자세한 내용은 이 문서의 "추가 정보" 절을 참조하십시오.

해결 과정


이 문제를 해결하려면 제한 시간 설정을 다시 구성합니다.

발생한 오류 유형에 따라 다음과 같이 제한 시간 설정을 다시 구성할 수 있습니다.
  • 다음 코드를 사용하여 원격 로그인 제한 시간을 30초로 설정합니다.
    sp_configure 'remote login timeout', 30
    go
    reconfigure with override
    go
  • 다음 코드를 사용하여 원격 쿼리 제한 시간을 0(무한 대기)으로 설정합니다.
    sp_configure 'remote query timeout', 0 
    go
    reconfigure with override
    go

참조

원격 로그인 제한 시간 설정과 IDBInitialize::Initialize가 호출되는 위치에 대한 자세한 내용은 MSDN의 "Connecting to an OLE DB Provider" 항목이나 BackOffice Resource Kit의 Microsoft SQL Server 7.0 Resource Guide를 참조하십시오.

또한 쿼리 프로세서가 OLE DB 공급자와 상호 작용하여 유형이 다른 분산 쿼리를 가능하게 설정하는 방법에 대한 설명을 보려면 MSDN에서 다음 항목을 참조하십시오.

  • Microsoft SQL Server 2000 분산 쿼리: OLE DB 연결성
  • 기본 OLE DB

추가 정보


첫 번째 오류 메시지는 IDBInitialize:Initialize 메서드와 관련이 있습니다.

쿼리가 원격 서버에 연결하려고 할 때 쿼리가 연결하는 데 걸리는 시간이 원격 로그인 제한 시간 옵션 값을 초과하면 첫 번째 오류 메시지가 발생합니다.


두 번째 오류 메시지는 ICommandText::Execute 메서드와 관련이 있습니다.

이 메시지는 쿼리를 처리하는 데 걸리는 시간이 원격 쿼리 제한 시간 구성 설정에 지정된 시간보다 길다는 것을 나타냅니다.


기본적으로 Microsoft SQL Server 7.0에서는 제한 시간 설정이 0(무한 대기)이며 SQL Server 2000과 SQL Server 2005에서는 제한 시간 설정이 600(10분)입니다.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

'프로그래밍 > DB' 카테고리의 다른 글

MSSQL 요일 반환  (0) 2012.11.02
MSSQL 트랜잭션 로그 축소  (0) 2012.11.02
MSSQL 트랜젝션  (0) 2012.10.11
날짜 형식 사용하기  (0) 2012.09.24
[MSSQL 트랜잭션 로그 관리] MSSQL 2000  (0) 2011.07.04