다음을 통해 공유


SQL Server Native Client에서 데이터베이스 미러링 사용

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

참고 항목

SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신 Always On 가용성 그룹를 사용하세요.

Important

SNAC(SQL Server Native Client)는 다음과 함께 제공되지 않습니다.

  • SQL Server 2022(16.x) 이상 버전
  • SQL Server Management Studio 19 이상 버전

SQL Server Native Client(SQLNCLI 또는 SQLNCLI11)와 레거시 Microsoft OLE DB Provider for SQL Server(SQLOLEDB)는 새로운 응용 프로그램 개발에 권장되지 않습니다.

새 프로젝트의 경우 다음 드라이버 중 하나를 사용합니다.

SQL Server 데이터베이스 엔진(버전 2012부터 2019까지)의 구성 요소로 제공되는 SQLNCLI의 경우 이 수명 주기 예외 지원을 참조하세요.

SQL Server 2005(9.x)에 도입된 데이터베이스 미러링은 데이터베이스 가용성과 데이터 중복을 높이는 솔루션입니다. SQL Server Native Client는 데이터베이스 미러링을 암시적으로 지원하므로 개발자는 데이터베이스에 대해 구성되면 코드를 작성하거나 다른 작업을 수행할 필요가 없습니다.

데이터베이스별로 구현되는 데이터베이스 미러링은 SQL Server 프로덕션 데이터베이스의 복사본을 대기 서버에 유지합니다. 이 서버는 데이터베이스 미러링 세션의 구성 및 상태에 따라 핫 대기 서버나 웜 대기 서버가 됩니다. 핫 대기 서버는 커밋된 트랜잭션 손실 없이 신속한 장애 조치(failover)를 지원하며, 웜 대기 서버는 강제 서비스(데이터 손실 가능)를 지원합니다.

프로덕션 데이터베이스를 데이터베이스라고 하며 대기 복사본을 미러 데이터베이스라고 합니다. 주 데이터베이스 및 미러 데이터베이스는 별도의 SQL Server 인스턴스(서버 인스턴스)에 상주해야 하며 가능한 한 상주하는 컴퓨터도 달라야 합니다.

주 서버라고 하는 프로덕션 서버 인스턴스는 미러 서버라고 하는 대기 서버 인스턴스와 통신합니다. 주 서버와 미러 서버는 데이터베이스 미러링 세션 내에서 파트너 역할을 합니다. 주 서버가 실패하면 미러 서버는 장애 조치(failover)라는 프로세스를 통해 데이터베이스를 주 데이터베이스로 만들 수 있습니다. 예를 들어 서로 파트너 관계인 Partner_A와 Partner_B 서버가 있는데, 처음에 주 데이터베이스는 주 서버인 Partner_A에 상주하고 미러 데이터베이스는 미러 서버인 Partner_B에 상주한다고 가정합니다. Partner_A가 오프라인이 된 경우 Partner_B에 있는 데이터베이스가 장애 조치(Failover)되어 현재 주 데이터베이스가 될 수 있습니다. Partner_A가 미러 세션에 다시 조인하면 미러 서버가 되고, 데이터베이스는 미러 데이터베이스가 됩니다.

대체 데이터베이스 미러링 구성은 다양한 수준의 성능 및 데이터 안전성을 제공하며 다양한 형태의 장애 조치(failover)를 지원합니다. 자세한 내용은 데이터베이스 미러링(SQL Server)을 참조하세요.

미러 데이터베이스 이름을 지정할 때 별칭을 사용할 수 있습니다.

참고 항목

미러링된 데이터베이스에 대한 초기 연결 시도 및 재연결 시도에 대한 자세한 내용은 데이터베이스 미러링 세션에 클라이언트 연결(SQL Server)을 참조하세요.

프로그래밍 고려 사항

주 데이터베이스 서버가 실패하면 클라이언트 응용 프로그램은 API 호출에 대한 응답으로 오류를 수신하며, 이는 데이터베이스에 대한 연결이 끊어졌음을 나타냅니다. 이 경우 데이터베이스에 대한 커밋되지 않은 변경 내용이 손실되고 현재 트랜잭션이 롤백됩니다. 또한 애플리케이션에서는 연결을 종료하거나 데이터 원본 개체를 해제한 후 다시 연결해야 합니다. 연결은 미러 데이터베이스로 투명하게 다시 전달되며, 이제 주 서버 역할을 합니다.

연결이 설정되면 주 서버는 장애 조치(Failover) 파트너의 ID를 장애 조치(Failover) 시 사용할 클라이언트로 보냅니다. 주 서버가 실패한 후 애플리케이션이 연결을 설정하려고 시도한 경우 클라이언트는 장애 조치(failover) 파트너의 ID를 알지 못합니다. 클라이언트가 이 시나리오에 대처할 수 있도록 초기화 속성 및 연결된 연결 문자열 키워드를 사용하면 클라이언트가 장애 조치(failover) 파트너의 ID를 자체적으로 지정할 수 있습니다. 클라이언트 특성은 이 시나리오에서만 사용됩니다. 주 서버를 사용할 수 있으면 사용되지 않습니다. 클라이언트에서 제공하는 장애 조치(failover) 파트너 서버가 장애 조치(failover) 파트너 역할을 하는 서버를 참조하지 않으면 서버에서 연결을 거부합니다. 연결이 설정된 후 특성을 조사하여 실제 장애 조치(Failover) 파트너의 ID를 확인하면 애플리케이션에 구성 변경 내용을 적용할 수 있습니다. 파트너 정보를 캐싱하여 연결 문자열 업데이트하거나 첫 번째 연결 시도가 실패하는 경우 재시도 전략을 고안해야 합니다.

참고 항목

DSN, 연결 문자열 또는 연결 속성/특성에서 이 기능을 사용하려면 연결에서 사용할 데이터베이스를 명시적으로 지정해야 합니다. 이 작업이 수행되지 않으면 SQL Server Native Client는 파트너 데이터베이스로 장애 조치(failover)를 시도하지 않습니다.

미러링이 데이터베이스의 기능입니다. 여러 데이터베이스를 사용하는 애플리케이션은 이 기능을 악용하지 못할 수 있습니다.

또한 서버 이름은 대/소문자를 구분하지 않지만 데이터베이스 이름은 대/소문자를 구분합니다. 따라서 DSN 및 연결 문자열에서 동일한 대/소문자 조합을 사용해야 합니다.

SQL Server Native Client OLE DB 공급자

SQL Server Native Client OLE DB 공급자는 연결 및 연결 문자열 특성을 통해 데이터베이스 미러링을 지원합니다. SSPROP_INIT_FAILOVERPARTNER 속성이 DBPROPSET_SQLSERVERDBINIT 속성 집합에 추가되었으며 FailoverPartner 키워드는 DBPROP_INIT_PROVIDERSTRING 대한 새 연결 문자열 특성입니다. 자세한 내용은 SQL Server Native Client에서 연결 문자열 키워드 사용을 참조 하세요.

공급자가 로드되는 한 장애 조치(failover) 캐시는 CoUninitialize 가 호출되거나 애플리케이션에 데이터 원본 개체와 같은 SQL Server Native Client OLE DB 공급자가 관리하는 일부 개체에 대한 참조가 있는 한 유지 관리됩니다.

데이터베이스 미러링에 대한 SQL Server Native Client OLE DB 공급자 지원에 대한 자세한 내용은 초기화 및 권한 부여 속성을 참조 하세요.

SQL Server Native Client ODBC 드라이버

SQL Server Native Client ODBC 드라이버는 연결 및 연결 문자열 특성을 통해 데이터베이스 미러링을 지원합니다. 특히 SQL_COPT_SS_FAILOVER_PARTNER 특성은 SQLSetConnectAttr 및 SQLGetConnectAttr 함수함께 사용하기 위해 추가되었으며 Failover_Partner 키워드는 새 연결 문자열 특성으로 추가되었습니다.

애플리케이션에 하나 이상의 환경 핸들이 할당된 한 장애 조치(failover) 캐시는 유지 관리됩니다. 반대로 마지막 환경 핸들의 할당이 취소되면 손실됩니다.

참고 항목

장애 조치(failover) 서버 이름의 사양을 지원하도록 ODBC 드라이버 관리자가 향상되었습니다.

참고 항목

SQL Server Native Client 기능
데이터베이스 미러링 세션(SQL Server)에 클라이언트 연결
데이터베이스 미러링(SQL Server)