Поделиться через


При подключении к прослушивателю Always On в среде с несколькими подсетями истекает время ожидания

Эта статья поможет устранить проблему, возникающую при подключении к прослушивателю группы доступности AlwaysOn SQL Server в среде с несколькими подсетами.

Исходная версия продукта: 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
Исходный номер базы знаний: 2792139

Симптомы

После настройки прослушивателя группы доступности AlwaysOn в Microsoft SQL Server 2012 может быть не удается подключить прослушиватель или подключиться к нему из приложения.

Например, при попытке подключиться к прослушивателю SQL Server с помощью SQLCMDвремени ожидания подключения. Кроме того, вы получите сообщение об ошибке, похожее на следующее:

Sqlcmd: ошибка: Microsoft SQL Native Client: истек срок ожидания входа.

Примечание.

Обычно эти симптомы являются периодическими или связаны с отработой отказа ресурса группы доступности.

На следующем снимку экрана показан пример того, что происходит при попытке проверить связь прослушивателя для доступности aglisten. Снимок экрана также показывает успешное подключение к SQL Server с помощью SQLCMD команды при включении параметра -Mотработки отказа с несколькими подсетью.

Снимок экрана: окно командной строки при подключении прослушивателя к доступности aglisten.

Примечание.

Для подключения к прослушивателю можно использовать SQLCMD команду вместе с -M параметром, как показано на снимке экрана.

Причина

Эта проблема возникает, так как приложение либо использует устаревший поставщик данных, который не поддерживает новый MultiSubnetFailover параметр, либо не настроен для использования этого параметра.

Этот параметр поддерживается в более новых версиях драйвера SQLClient, который входит в состав платформа .NET Framework 4 и более поздних версий платформа .NET Framework, а затем переносится в платформа .NET Framework 3.5.

Примечание.

Команда PING — это простое средство тестирования подключения, которое не поддерживает новый параметр.

Решение

Вы можете использовать одно из следующих резолюций, применимых к вашему делу:

  • Чтобы устранить эту ситуацию, когда поставщики данных поддерживают MultiSubNetFailover параметр, добавьте параметр в MultiSubNetFailover строка подключения и задайте для него значение true.

  • Чтобы устранить эту ситуацию, когда устаревшие клиенты не могут использовать MultiSubnetFailover свойство, можно изменить значение прослушивателя RegisterAllProvidersIP на 0. Для этого выполните следующую команду из интерфейса командной строки Windows PowerShell:

    Import-Module FailoverClusters
    Get-ClusterResource <*Your listener name*>|Set-ClusterParameter RegisterAllProvidersIP 0
    

    Снимок экрана: выходные данные примера команды в Windows PowerShell.

Примечание.

После установки RegisterAllProvidersIP значения 0 текущий сетевой IP-адрес должен быть не зарегистрирован с DNS-сервера, а автономный IP-адрес должен быть зарегистрирован на DNS-сервере при отработки отказа. Это может привести к задержке подключения для следующей отработки отказа.

Дополнительная информация

При попытке подключиться к прослушивателю, определенному в нескольких подсетях, операция может завершиться ошибкой, если драйвер клиента пытается подключиться с помощью одного из автономных IP-адресов прослушивателя.

При создании прослушивателя IP-адрес назначается для каждой уникальной подсети, в которую размещена реплика группы доступности. Например, если прослушиватель создается для группы доступности с репликами, существующими в двух подсетях, в прослушивателе определены два IP-адреса. Один адрес используется приложением, которое может подключаться к экземпляру SQL Server в подсети 1, а другой адрес используется при подключении приложения к экземпляру SQL Server в подсети 2.

За кулисами прослушиватель создает ресурс точки доступа клиента клиента кластера Windows. Одним из его свойств является RegisterAllProvidersIP. При создании прослушивателя это значение равно 1, а все IP-адреса прослушивателя регистрируются на DNS-сервере. Эта конфигурация обеспечивает сокращение времени повторного подключения для клиентов.

Так как запись DNS содержит все IP-адреса, клиент, который пытается подключиться к прослушивателю, должен знать, как справиться с этой ситуацией. Параметр MultiSubnetFailover позволяет драйверу клиента попробовать подключения параллельно со всеми IP-адресами прослушивателя. MultiSubnetFailover Без параметра драйвер клиента попытается подключиться последовательно ко всем IP-адресам прослушивателя. Последовательные подключения могут привести к длительному времени входа или истечению времени входа.

Примечание.

Проблема, упоминаемая в этой статье, также влияет на среды SharePoint, настроенные на использование вторичной реплики группы доступности AlwaysOn только для чтения. Чтобы устранить эту проблему, выполните следующие действия, применимые к вашей версии SharePoint:

Ссылки