데이터베이스 미러링 세션에 대한 초기 연결 설정

새 설치: 2006년 4월 14일

미러된 데이터베이스에 대한 초기 연결의 경우 클라이언트에서 최소한 서버 인스턴스의 이름을 제공하는 연결 문자열을 제공해야 합니다. 이 필수 서버 이름은 현재 주 서버 인스턴스를 식별하며 초기 파트너 이름이라고 합니다.

필요에 따라 연결 문자열에서 다른 서버 인스턴스의 이름을 제공할 수도 있습니다. 이 이름은 첫 번째 연결 시도 중에 초기 파트너를 사용할 수 없는 경우 사용되는 현재 미러 서버 인스턴스를 식별합니다. 두 번째 이름을 장애 조치 파트너 이름이라고 합니다.

또한 연결 문자열에서 데이터베이스 이름을 제공해야 합니다. 데이터베이스 이름은 데이터 액세스 공급자의 장애 조치(Failover) 시도를 지원하는 데 필요합니다.

연결 문자열이 수신되면 데이터 액세스 공급자는 초기 파트너 이름과 장애 조치 파트너 이름(제공된 경우)을 클라이언트의 휘발성 메모리에 캐시로 저장합니다. 관리 코드의 경우 캐시 범위는 응용 프로그램 도메인까지 해당됩니다. 초기 파트너 이름이 캐시된 다음에는 데이터 액세스 공급자가 초기 파트너 이름을 업데이트하지 않습니다. 클라이언트에서 장애 조치 파트너 이름을 제공하면 데이터 액세스 공급자는 초기 파트너 이름을 사용하여 연결할 수 없는 경우에 대비하여 이 장애 조치 파트너 이름도 일시적으로 저장합니다.

데이터베이스 미러링 세션에서는 클라이언트 컴퓨터에 네트워크 통신 문제가 있는 경우 등 서버에 액세스하는 클라이언트와 관련된 문제를 방지하지 못합니다. 데이터 액세스 공급자와 관련되지 않은 여러 가지 이유로 인해 미러된 데이터베이스에 대한 연결 시도가 실패할 수도 있습니다. 예를 들어 데이터베이스가 장애 조치 중이어서 주 서버 인스턴스가 비활성화되거나 네트워크 오류로 인해 연결 시도가 실패할 수 있습니다.

연결을 시도할 때 데이터 액세스 공급자는 최초 파트너 이름부터 사용하기 시작합니다. 지정한 서버 인스턴스를 사용할 수 있으며 현재 주 서버 인스턴스이면 일반적으로 연결 시도에 성공합니다.

[!참고] 미러링 세션이 일시 중지되면 일반적으로 클라이언트는 주 서버에 연결하여 파트너 이름을 다운로드합니다. 그러나 미러링이 재개될 때까지 클라이언트에서 데이터베이스를 사용할 수 없습니다.

이 시도가 실패하면 데이터 액세스 공급자는 장애 조치 파트너 이름(사용 가능한 경우)을 시도합니다. 파트너 이름이 현재 주 서버를 올바르게 식별하는 경우 일반적으로 데이터 액세스 공급자가 초기 연결을 여는 데 성공합니다. 이 연결을 완료하면 데이터 액세스 공급자는 현재 미러 서버의 서버 인스턴스 이름을 다운로드합니다. 이 이름은 장애 조치 파트너 이름으로 캐시에 저장되며 클라이언트에서 제공한 장애 조치 파트너 이름(있는 경우)을 덮어씁니다. 그런 후에는 .NET Framework Data Provider for SQL Server에서 장애 조치 파트너 이름을 업데이트하지 않습니다. 반면 SQL 네이티브 클라이언트는 후속 연결이나 연결 다시 설정에서 다른 파트너 이름이 반환될 때마다 캐시를 업데이트합니다.

다음 그림에서는 미러된 데이터베이스 Db_1에 대한 클라이언트의 초기 파트너 Partner_A 연결을 보여 줍니다. 이 그림은 클라이언트가 제공한 초기 파트너 이름이 현재 주 서버인 Partner_A를 올바르게 식별하는 경우를 나타냅니다. 초기 연결 시도에 성공하고 데이터 액세스 공급자가 미러 서버의 이름(현재 Partner_B)을 장애 조치 파트너 이름으로 해당 로컬 캐시에 저장합니다. 마지막으로 클라이언트에서 Db_1 데이터베이스의 주 복사본에 연결합니다.

초기 파트너가 주 서버인 경우의 클라이언트 연결

예를 들어 네트워크 오류나 비활성 서버 인스턴스로 인해 초기 연결 시도가 실패할 수 있습니다. 초기 파트너를 사용할 수 없어 데이터 액세스 공급자가 장애 조치 파트너에 연결하려면 클라이언트에서 제공한 장애 조치 파트너 이름이 연결 문자열에 있어야 합니다.

이 경우 장애 조치 파트너 이름을 사용할 수 없으면 미러되지 않은 데이터베이스의 경우처럼 오류가 반환되거나 네트워크 연결 시간이 초과될 때까지 원래 연결 시도가 계속됩니다.

장애 조치 파트너 이름이 연결 문자열에 제공되는 경우 데이터 액세스 공급자의 동작은 클라이언트의 네트워크 프로토콜과 운영 체제에 따라 다음과 같이 달라집니다.

  • TCP/IP의 경우 클라이언트에서 Microsoft Windows XP 이상을 실행 중이면 데이터베이스 미러링과 관련된 연결 다시 시도 알고리즘에 의해 연결 시도가 조정됩니다. 연결 다시 시도 알고리즘은 지정된 연결 시도에서 연결을 여는 데 할당되는 최대 시간(다시 시도 시간)을 결정합니다. 자세한 내용은 연결 다시 시도 알고리즘(TCP/IP 연결용)을 참조하십시오.
  • Microsoft Windows XP 이상을 실행하지 않는 클라이언트 및 다른 네트워크 프로토콜의 경우
    오류가 발생하거나 초기 파트너를 사용할 수 없으면 데이터 액세스 공급자에서 네트워크 연결 제한 시간이 만료되거나 로그인 제한 시간이 만료될 때까지 초기 연결 시도가 대기합니다. 일반적으로 이 대기 시간은 20초에서 30초 정도입니다. 그런 후에는 데이터 액세스 공급자가 시간 초과되지 않으면 장애 조치 파트너에 연결을 시도합니다. 연결에 성공하기 전에 연결 제한 시간이 만료되거나 장애 조치 파트너를 사용할 수 없으면 연결 시도가 실패합니다. 로그인 제한 시간 내에 장애 조치 파트너를 사용할 수 있으며 현재 주 서버인 경우 일반적으로 연결 시도에 성공합니다.

미러된 데이터베이스에 대한 연결 문자열

클라이언트가 제공한 연결 문자열에는 데이터 액세스 공급자가 데이터베이스에 연결하는 데 사용하는 정보가 포함되어 있습니다. 이 섹션에서는 특히 SQL 네이티브 클라이언트 ODBC 드라이버 연결을 사용하여 미러된 데이터베이스에 연결하는 경우와 관련된 키워드에 대해 설명합니다. 모든 연결 문자열 키워드에 대한 자세한 내용은 Using Connection String Keywords with SQL Native Client을 참조하십시오.

Network 특성

연결 문자열에 네트워크 프로토콜을 지정하는 Network 특성이 있어야 합니다. 이렇게 하면 지정한 네트워크 프로토콜이 여러 파트너에 대한 연결 간에 유지됩니다. 미러된 데이터베이스에 대한 연결에 가장 적합한 프로토콜은 TCP/IP입니다. 클라이언트에서 모든 파트너 연결에 대해 TCP/IP를 요청하도록 하기 위해 연결 문자열은 다음 특성을 제공합니다.

Network=dbmssocn; 
ms366348.note(ko-kr,SQL.90).gif중요:
클라이언트의 프로토콜 목록 맨 위에 TCP/IP를 유지하는 것이 좋습니다. 그러나 연결 문자열에서 Network 특성을 지정하면 목록 순서는 무시됩니다.

또는 클라이언트에서 모든 파트너 연결에 대해 명명된 파이프를 요청하도록 하기 위해 연결 문자열은 다음 특성을 제공합니다.

Network=dbnmpntw; 
ms366348.note(ko-kr,SQL.90).gif중요:
명명된 파이프는 TCP/IP 다시 시도 알고리즘을 사용하지 않으므로 미러된 데이터베이스에 연결하기 전에 명명된 파이프 연결 시도가 시간 초과되는 경우가 많습니다.

Server 특성

연결 문자열에는 초기 파트너 이름을 제공하는 Server 특성이 있어야 합니다. 이 특성은 현재 주 서버 인스턴스를 식별합니다.

서버 인스턴스를 식별하는 가장 간단한 방법은 <server_name>[\<SQL_Server_instance_name>]과 같이 해당 이름을 지정하는 것입니다. 예를 들면 다음과 같습니다.

Server=Partner_A;

또는

Server=Partner_A\Instance_2;

그러나 시스템 이름을 사용하는 경우 클라이언트에서 DNS 조회를 수행하여 서버의 IP 주소를 가져오고 SQL Server Browser 쿼리를 수행하여 파트너가 있는 서버의 포트 번호를 가져와야 합니다. 서버 이름을 지정하는 대신 Server 특성에 파트너의 IP 주소와 포트 번호를 지정하면 해당 조회와 쿼리를 건너뛸 수 있습니다. 파트너에 연결하는 동안 외부 지연 가능성을 최소화하려면 이 방법을 사용하는 것이 좋습니다.

[!참고] 연결 문자열에서 포트가 아닌 명명된 인스턴스 이름을 지정하는 경우 SQL Server Browser 쿼리가 필요합니다.

IP 주소와 포트를 지정하기 위해 Server 특성은 Server=<ip_address>,<port> 형식을 사용합니다. 예를 들면 다음과 같습니다.

Server=123.34.45.56,4724; 

[!참고] IP 주소는 IP 버전 4(IPv4) 또는 IP 버전 6(IPv6)일 수 있습니다.

Database 특성

또한 연결 문자열은 미러된 데이터베이스의 이름을 제공하는 Database 특성을 지정해야 합니다. 클라이언트가 연결을 시도할 때 데이터베이스를 사용할 수 없으면 예외가 발생합니다.

예를 들어 주 서버 Partner_A의 AdventureWorks 데이터베이스에 명시적으로 연결하기 위해 클라이언트는 다음 연결 문자열을 사용합니다.

" Server=Partner_A; Database=AdventureWorks "

[!참고] 이 문자열에는 인증 정보가 생략됩니다. 통합 인증을 위한 키워드에 대한 자세한 내용은 Using Connection String Keywords with SQL Native Client을 참조하십시오.

ms366348.note(ko-kr,SQL.90).gif중요:
Server 특성에 프로토콜 접두사를 사용하면(Server=tcp:<servername>) Network 특성과 호환되지 않으며 두 위치에서 모두 프로토콜을 지정할 경우 오류가 발생합니다. 그러므로 연결 문자열에서 Network 특성을 사용하여 프로토콜을 지정하고 Server 특성에는 서버 이름만 지정하는 것이 좋습니다("Network=dbmssocn; Server=<servername>").

Failover Partner 특성

초기 파트너 이름 외에 클라이언트에서 현재 미러 서버 인스턴스를 식별하는 장애 조치 파트너 이름을 지정할 수도 있습니다. 장애 조치 파트너는 Failover Partner 특성으로 지정합니다. 서버 인스턴스를 식별하는 가장 간단한 방법은 <server_name>[\<SQL_Server_instance_name>]과 같이 해당 시스템 이름을 지정하는 것입니다.

또는 Failover Partner 특성에서 IP 주소와 포트 번호를 제공할 수 있습니다. 데이터베이스에 대한 첫 번째 연결 중에 초기 연결 시도가 실패하면 장애 조치 파트너에 대한 연결에서 DNS 및 SQL Server Browser를 사용하지 않습니다. 연결이 설정되면 장애 조치 파트너 이름이 장애 조치 파트너 이름을 덮어쓰므로 장애 조치가 발생할 경우 리디렉션된 연결에 DNS 및 SQL Server Browser가 필요합니다.

[!참고] 초기 파트너 이름만 제공되면 다시 연결 방법에 대한 경우를 제외하고 응용 프로그램 개발자가 다른 작업을 수행하거나 코드를 작성할 필요가 없습니다.

[!참고] 관리 코드 응용 프로그램 개발자는 SqlConnection 개체의 ConnectionString에 장애 조치 파트너 이름을 제공합니다. 이러한 연결 문자열을 사용하는 방법은 Microsoft .NET Framework SDK에 포함된 ADO.NET 설명서에서 "Database Mirroring Support in the .NET Framework Data Provider for SQL Server"를 참조하십시오.

연결 문자열 예

예를 들어 TCP/IP를 사용하여 Prtner_A 또는 Partner_B의 AdventureWorks 데이터베이스에 명시적으로 연결하기 위해 클라이언트 응용 프로그램에서 다음 연결 문자열을 제공할 수 있습니다.

"Server=Partner_A; Failover Partner=Partner_B; Database=AdventureWorks; Network=dbmssocn"

또는 클라이언트에서 IP 주소와 포트 번호를 사용하여 초기 파트너 Partner_A를 식별할 수 있습니다. 예를 들어 IP 주소가 250.65.43.21이고 포트 번호가 4734이면 연결 문자열은 다음과 같습니다.

"Server=250.65.43.21,4734; Failover Partner=Partner_B; Database=AdventureWorks; Network=dbmssocn"

참고 항목

개념

네트워크 프로토콜 및 TDS 끝점
데이터베이스 미러링 개요
데이터베이스 미러링 중에 발생 가능한 오류

관련 자료

SQL Server 데이터베이스 엔진에 연결
Using Connection String Keywords with SQL Native Client
SQL Server Browser 사용

도움말 및 정보

SQL Server 2005 지원 받기