Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья поможет устранить проблему, возникающую при подключении к прослушивателю группы доступности AlwaysOn SQL Server в среде с несколькими подсетами.
Исходная версия продукта: SQL Server 2012 и более поздние версии
Исходный номер базы знаний: 2792139
Симптомы
После настройки прослушивателя группы доступности для группы доступности Always On в Microsoft SQL Server возможно, вы не сможете пинговать слушатель или подключиться к нему из приложения.
Например, при попытке подключения к прослушивателю SQL Server с помощью SQLCMD
, происходит тайм-аут соединения. Кроме того, появляется сообщение об ошибке, которое выглядит примерно так:
Sqlcmd: ошибка: Microsoft SQL Native Client: истек срок ожидания входа.
Примечание.
Эти симптомы являются периодическими или связаны с переключением при отказе ресурса группы доступности.
На следующем снимку экрана показан пример того, что происходит при попытке проверить связь прослушивателя для доступности aglisten
. Снимок экрана также показывает успешное подключение к SQL Server с помощью SQLCMD
команды при включении параметра -M
отработки отказа с несколькими подсетью.
Примечание.
Для подключения к прослушивателю можно использовать 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
Примечание.
После установки 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:
Для SharePoint 2007: это классифицируется как устаревшее приложение. Таким образом, SharePoint 2007 не может быть настроен на использование этого
MultiSubnetFailover
параметра. Вместо этого необходимо использовать команду Windows PowerShell, описанную в разделе "Разрешение ".Для SharePoint 2010: пакеты накопительного обновления теперь доступны, добавляющие поддержку
MultiSubnetFailover
параметра. Дополнительные сведения о пакетах обновления см. в следующей статье:
Ссылки
Поддержка SqlClient для высокого уровня доступности, аварийного восстановления
Создание или настройка прослушивателя группы доступности (SQL Server)
Connection Timeouts in Multi-subnet Availability Group (Время ожидания подключения в группе доступности с несколькими подсетями)