다음을 통해 공유


OLE DB 드라이버의 유휴 연결 복원력

적용 대상: SQL Server 2014(12.x) 이상 Azure SQL Database

OLE DB 드라이버 다운로드

개요

Microsoft OLE DB Driver for SQL Server 버전 18.6.0부터 연결 복원력을 통해 드라이버에서 끊어진 유휴 연결을 자동으로 복원할 수 있습니다.

다음 다이어그램에서는 OLE DB 드라이버에서 유휴 연결 복원력이 작동하는 방식을 설명합니다. 연결 복원력 정보 다이어그램

  1. T1에서는 IDBInitialize::Initialize를 사용하여 연결합니다.
  2. T2와 T3 간에 드라이버와 서버 간의 통신이 없으며 이로 인해 유휴 연결이 발생합니다. 이 시간 동안 네트워크 연결이 중단될 수 있습니다. 중단은 유휴 소켓을 닫거나 잠시 동안 디바이스를 대기 상태로 두는 네트워크 디바이스와 같은 것일 수 있습니다.
  3. T3에서 클라이언트 애플리케이션은 OLE DB 드라이버를 사용하여 명령을 실행하려고 합니다(예: ICommand::Execute 사용). 드라이버는 연결이 끊어진 것을 감지하고 투명하게 연결을 다시 설정합니다.

키워드 및 속성

키워드 속성 기본 설명
ConnectRetryCount SSPROP_INIT_CONNECT_RETRY_COUNT 0과 255(포함) 사이의 정수 값 1 연결이 끊어진 경우 다시 연결하려고 시도하는 최대 횟수를 제어합니다. 기본적으로 끊어진 연결을 다시 설정하려고 한 번 시도합니다. 값이 0이면 다시 연결이 시도되지 않습니다.
ConnectRetryInterval SSPROP_INIT_CONNECT_RETRY_INTERVAL 1과 60(포함) 사이의 정수 10 연결을 다시 시도하는 간격(초)입니다. ConnectRetryCount가 0과 같으면 이 키워드는 무시됩니다.

다음 페이지에서는 이러한 속성을 설정하는 방법에 대한 자세한 정보를 제공합니다.

애플리케이션이 DBPROP_INIT_PROMPT 연결을 설정하고 나중에 끊어진 연결을 통해 문을 실행하려고 하면 OLE DB 드라이버가 대화 상자를 다시 표시하지 않습니다.

속성을 통해 연결 상태를 가져오는 경우 DBPROP_CONNECTIONSTATUS.

  • 복구 중에는 속성이 DBPROPVAL_CS_INITIALIZED를 반환합니다.
  • 복구에 실패하면 속성이 DBPROPVAL_CS_COMMUNICATIONFAILURE를 반환합니다.

참고 항목

명령 시간 제한(DBPROPSET_ROWSET의 DBPROP_COMMANDTIMEOUT)이 0이 아닌 값으로 설정되었으며 연결 복구에 명령 시간 제한보다 오랜 시간이 걸리면 연결이 복구되지 않습니다.

비동기 실행을 사용하여 연결 복구

비동기 실행을 사용 중이며 연결을 복구해야 하는 경우 비동기 호출을 실행하기 전에 연결 복구가 동기적으로 수행됩니다. 비동기 실행에 대한 자세한 내용은 비동기 작업 수행을 참조 하세요.

예상 오류

연결 복구에 실패하면 다음 오류 중 하나가 발생할 수 있습니다.

  • 연결이 끊어져서 복구가 불가능합니다. 클라이언트 드라이버가 연결을 한 번 이상 복구하려고 시도했지만 모든 시도가 실패했습니다. ConnectRetryCount 값을 늘려 복구 시도 횟수를 늘림
  • 서버에서 복구 시도를 확인하지 않았으므로 연결 복구가 불가능합니다.
  • 서버가 복구 시도 중에 요청된 정확한 클라이언트 TDS 버전을 유지하지 않았으므로 연결 복구가 불가능합니다.
  • 서버가 복구 시도 중에 요청된 정확한 서버 주 버전을 유지하지 않았으므로 연결 복구가 불가능합니다.
  • 연결이 끊어져서 복구가 불가능합니다. 연결은 서버에서 복구할 수 없는 것으로 표시됩니다. 연결을 복원하려고 시도하지 않았습니다.
  • 연결이 끊어져서 복구가 불가능합니다. 클라이언트 드라이버에서 연결을 복구할 수 없는 것으로 표시합니다. 연결을 복원하려고 시도하지 않았습니다.
  • 서버가 복구 시도 중에 SSL 암호화를 유지하지 않았으므로 연결 복구가 불가능합니다.