시간 제한은 다중 서브넷 환경에서 Always On 수신기에 연결할 때 발생합니다.
이 문서는 다중 서브넷 환경에서 SQL Server Always On 가용성 그룹 수신기에 연결할 때 발생하는 문제를 resolve 데 도움이 됩니다.
원래 제품 버전: SQL Server 2012 Developer, SQL Server 2012 Enterprise, SQL Server 2012 Express, SQL Server 2012 Standard, SQL Server 2012 Web, SQL Server 2012 Enterprise Core
원래 KB 번호: 2792139
증상
Microsoft SQL Server 2012에서 Always On 가용성 그룹에 대한 가용성 그룹 수신기를 구성한 후에는 수신기를 ping하거나 애플리케이션에서 연결할 수 없습니다.
예를 들어 를 사용하여 SQLCMD
SQL Server 수신기에 연결하려고 하면 연결 시간이 초과됩니다. 또한 다음과 유사한 오류 메시지가 표시됩니다.
Sqlcmd: 오류: Microsoft SQL Native Client: 로그인 시간 제한이 만료되었습니다.
참고
이러한 증상은 일반적으로 간헐적이거나 가용성 그룹 리소스의 장애 조치와 관련이 있습니다.
다음 스크린샷은 의 가용성을 위해 수신기를 ping하려고 할 때 발생하는 일의 aglisten
예를 보여 줍니다. 스크린샷은 다중 서브넷 장애 조치(failover) 매개 변수 -M
를 포함할 때 명령을 사용하여 SQLCMD
SQL Server 대한 성공적인 연결을 보여줍니다.
참고
스크린샷에 SQLCMD
표시된 것처럼 명령을 매개 변수와 -M
함께 사용하여 수신기에 연결할 수 있습니다.
원인
이 문제는 애플리케이션이 새 MultiSubnetFailover
매개 변수를 지원하지 않는 레거시 데이터 공급자를 사용하거나 이 매개 변수를 사용하도록 구성되지 않았기 때문에 발생합니다.
이 매개 변수는 .NET Framework 4 이상 버전의 .NET Framework 포함된 최신 버전의 SQLClient 드라이버에서 지원되며 .NET Framework 3.5로 다시 이식됩니다.
참고
명령은 PING
새 매개 변수를 지원하지 않는 간단한 연결 테스트 도구입니다.
해결 방법
사례에 해당하는 다음 해결 방법 중 하나를 사용할 수 있습니다.
데이터 공급자가 매개 변수를 지원할
MultiSubNetFailover
때 이 상황을 resolve 연결 문자열 매개 변수를 추가하고MultiSubNetFailover
true로 설정합니다.레거시 클라이언트에서 속성을 사용할
MultiSubnetFailover
수 없는 경우 이 상황을 resolve 수신기 값을RegisterAllProvidersIP
0으로 변경할 수 있습니다. 이렇게 하려면 Windows PowerShell 명령줄 인터페이스에서 다음 명령을 실행합니다.Import-Module FailoverClusters Get-ClusterResource <*Your listener name*>|Set-ClusterParameter RegisterAllProvidersIP 0
참고
값을 0으로 설정한 RegisterAllProvidersIP
후 현재 온라인 IP 주소는 DNS 서버에서 등록 취소되어야 하며 장애 조치(failover)가 발생할 때 오프라인 IP 주소를 DNS 서버에 등록해야 합니다. 이로 인해 다음 장애 조치(failover)에 대한 연결 지연이 발생할 수 있습니다.
추가 정보
둘 이상의 서브넷에 정의된 수신기에 연결하려고 하면 클라이언트 드라이버가 수신기의 오프라인 IP 주소 중 하나를 사용하여 연결하려고 하면 작업이 실패할 수 있습니다.
수신기를 만들 때 가용성 그룹 복제본(replica) 호스트되는 각 고유 서브넷에 대해 IP 주소가 지정됩니다. 예를 들어 두 서브넷에 복제본이 있는 가용성 그룹에 대해 수신기를 만드는 경우 두 개의 IP 주소가 수신기에 정의됩니다. 한 주소는 서브넷 1의 SQL Server instance 연결할 수 있는 애플리케이션에서 사용되며, 다른 주소는 애플리케이션이 서브넷 2의 SQL Server instance 연결할 때 사용됩니다.
백그라운드에서 수신기는 Windows 클러스터 클라이언트 액세스 지점 리소스를 만듭니다. 속성 중 하나는 입니다 RegisterAllProvidersIP
. 수신기가 만들어지면 1로 설정되고 모든 수신기의 IP 주소가 DNS 서버에 등록됩니다. 이 구성은 클라이언트에 대한 다시 연결 시간을 줄입니다.
DNS 레코드에는 모든 IP 주소가 포함되므로 수신기에 연결하려는 클라이언트는 이 상황을 처리하는 방법을 알고 있어야 합니다. MultiSubnetFailover
매개 변수를 사용하면 클라이언트 드라이버가 모든 수신기의 IP 주소와 병렬로 연결을 시도할 수 있습니다. 매개 변수가 MultiSubnetFailover
없으면 클라이언트 드라이버는 수신기의 모든 IP 주소에 순차적으로 연결하려고 합니다. 순차적 연결로 인해 로그온 시간이 길어지거나 로그온 시간이 초과될 수 있습니다.
참고
이 문서에서 언급된 문제는 Always On 가용성 그룹의 보조 읽기 전용 복제본(replica) 사용하도록 구성된 SharePoint 환경에도 영향을 줍니다. 이 문제를 resolve SharePoint 버전에 적용되는 다음 작업 중 어느 것이든 수행합니다.
SharePoint 2007의 경우: 레거시 애플리케이션으로 분류됩니다. 따라서 매개 변수를 사용하도록
MultiSubnetFailover
SharePoint 2007을 구성할 수 없습니다. 대신 해결 섹션에 설명된 Windows PowerShell 명령을 사용해야 합니다.SharePoint 2010의 경우 이제 매개 변수에 대한
MultiSubnetFailover
지원을 추가하는 누적 업데이트 패키지를 사용할 수 있습니다. 업데이트 패키지에 대한 자세한 내용은 다음 문서를 참조하세요.
참조
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기