Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе рассматривается поддержка собственного клиента SQL Server (добавленная в SQL Server 2012) для групп доступности AlwaysOn. Дополнительные сведения о группах доступности AlwaysOn см. в статьях Прослушиватели групп доступности, подключение клиентов и отработка отказа приложений (SQL Server),создание и настройка групп доступности (SQL Server), отказоустойчивая кластеризация и группы доступности AlwaysOn (SQL Server) иактивные вторичные файлы: доступные для чтения вторичные реплики (группы доступности AlwaysOn).
Вы можете указать прослушиватель группы доступности определенной группы доступности в строке подключения. Если приложение SQL Server Native Client подключено к базе данных в группе доступности, которая завершается отработкой отказа, исходное подключение нарушено, и приложение должно открыть новое подключение, чтобы продолжить работу после отработки отказа.
Если вы не подключаетесь к прослушивателю группы доступности и если несколько IP-адресов связаны с именем узла, sql Server Native Client будет последовательно выполнять итерацию по всем IP-адресам, связанным с записью DNS. Это может занять много времени, если первый IP-адрес, возвращенный DNS-сервером, не привязан к сетевой карте (сетевой адаптер). При подключении к прослушивателю группы доступности sql Server Native Client пытается установить подключения ко всем IP-адресам параллельно и при успешной попытке подключения драйвер отменит все ожидающие попытки подключения.
Замечание
Увеличение времени ожидания подключения и реализация логики повторных попыток подключения увеличит вероятность подключения приложения к группе доступности. Кроме того, так как подключение может завершиться ошибкой из-за отработки отказа группы доступности, следует реализовать логику повторных попыток подключения, повторив неудачное подключение, пока не будет повторно подключено.
Подключение с помощью MultiSubnetFailover
Всегда указывайте MultiSubnetFailover=Yes при подключении к прослушивателю группы доступности SQL Server 2012 или экземпляру отказоустойчивого кластера SQL Server 2012.
MultiSubnetFailover позволяет ускорить отработку отказа для всех групп доступности и экземпляра отказоустойчивого кластера в SQL Server 2012 и значительно сократить время отработки отказа для топологий AlwaysOn с одной и несколькими подсетями. Во время отработки отказа в нескольких подсетях клиент будет пытаться выполнять подключения параллельно. Во время отработки отказа подсети собственный клиент SQL Server будет агрессивно повторять TCP-подключение.
Свойство MultiSubnetFailover подключения указывает, что приложение развертывается в группе доступности или экземпляре отказоустойчивого кластера, и что собственный клиент SQL Server попытается подключиться к базе данных на основном экземпляре SQL Server, пытаясь подключиться ко всем IP-адресам. При MultiSubnetFailover=Yes указании для подключения клиент повторяет попытки TCP-подключения быстрее, чем интервалы повторной передачи TCP по умолчанию операционной системы. Это позволяет ускорить повторное подключение после отработки отказа группы доступности AlwaysOn или экземпляра отказоустойчивого кластера AlwaysOn и применимо как к группам доступности с одним, так и с несколькими подсетями и экземплярами отказоустойчивого кластера.
Дополнительные сведения о ключевых словах строки подключения см. в разделе "Использование ключевых слов строки подключения" с собственным клиентом SQL Server.
Указание MultiSubnetFailover=Yes при подключении к другому прослушивателю группы доступности или экземпляру отказоустойчивого кластера может привести к негативному влиянию на производительность и не поддерживается.
Используйте следующие рекомендации для подключения к серверу в группе доступности или экземпляре отказоустойчивого кластера:
MultiSubnetFailoverИспользуйте свойство подключения при подключении к одной подсети или с несколькими подсетью. Это повысит производительность обоих.Чтобы подключиться к группе доступности, укажите прослушиватель группы доступности группы доступности в качестве сервера в строке подключения.
Подключение к экземпляру SQL Server, настроенном с более чем 64 IP-адресами, приведет к сбою подключения.
Поведение приложения, использующего
MultiSubnetFailoverсвойство подключения, не влияет на тип проверки подлинности: проверку подлинности SQL Server, проверку подлинности Kerberos или проверку подлинности Windows.Вы можете увеличить значение
loginTimeoutдля размещения времени отработки отказа и уменьшить повторные попытки подключения к приложению.Распределенные транзакции не поддерживаются.
Если маршрутизация только для чтения не действует, подключение к расположению вторичной реплики в группе доступности завершится ошибкой в следующих ситуациях:
Если расположение вторичной реплики не настроено для приема подключений.
Если приложение использует
ApplicationIntent=ReadWrite(описано ниже) и расположение вторичной реплики настроено для доступа только для чтения.
Подключение завершится ошибкой, если первичная реплика настроена на отклонение рабочих нагрузок только для чтения и содержит ApplicationIntent=ReadOnlyстроку подключения.
Обновление до использования кластеров с несколькими подсетями из зеркального отображения базы данных
Ошибка подключения возникает, если MultiSubnetFailoverFailover_Partner ключевые слова подключения присутствуют в строке подключения. Ошибка также возникает, если MultiSubnetFailover используется, а SQL Server возвращает ответ партнера отработки отказа, указывающий, что он является частью пары зеркального отображения базы данных.
При обновлении приложения SQL Server Native Client, которое в настоящее время использует зеркальное отображение базы данных в сценарии с несколькими подсетями, необходимо удалить Failover_Partner свойство подключения и заменить его MultiSubnetFailover на имя Yes сервера в строке подключения прослушивателем группы доступности. Если используется Failover_Partner строка подключения и MultiSubnetFailover=Yesдрайвер создаст ошибку. Однако если строка подключения использует Failover_Partner и MultiSubnetFailover=No (или ApplicationIntent=ReadWrite) приложение будет использовать зеркальное отображение базы данных.
Драйвер возвращает ошибку, если зеркальное отображение базы данных используется в базе данных-источнике в группе доступности, и если MultiSubnetFailover=Yes используется в строке подключения, которая подключается к базе данных-источнику вместо прослушивателя группы доступности.
Указание намерения приложения
Когда ApplicationIntent=ReadOnlyклиент запрашивает рабочую нагрузку чтения при подключении к базе данных с поддержкой AlwaysOn. Сервер будет применять намерение во время подключения и во время инструкции базы данных USE, но только к базе данных с поддержкой AlwaysOn.
Ключевое ApplicationIntent слово не работает с устаревшими базами данных только для чтения.
База данных может разрешить или запретить чтение рабочих нагрузок в целевой базе данных AlwaysOn. (Это делается с ALLOW_CONNECTIONS предложением инструкций PRIMARY_ROLE и SECONDARY_ROLETransact-SQL.)
Ключевое ApplicationIntent слово используется для включения маршрутизации только для чтения.
Маршрутизация только для чтения
Маршрутизация только для чтения — это функция, которая может обеспечить доступность только реплики только для чтения базы данных. Чтобы включить маршрутизацию только для чтения:
Необходимо подключиться к прослушивателю группы доступности AlwaysOn.
Ключевое
ApplicationIntentслово строки подключения должно иметь значениеReadOnly.Группа доступности должна быть настроена администратором базы данных, чтобы включить маршрутизацию только для чтения.
Возможно, что несколько подключений с использованием маршрутизации только для чтения не будут подключаться к одной реплике только для чтения. Изменения в синхронизации базы данных или изменения конфигурации маршрутизации сервера могут привести к подключению клиентов к разным репликам только для чтения. Чтобы убедиться, что все запросы только для чтения подключаются к одной реплике только для чтения, не передайте прослушиватель группы доступности ключевому слову Server строки подключения. Вместо этого укажите имя экземпляра только для чтения.
Маршрутизация только для чтения может занять больше времени, чем подключение к первичной, так как маршрутизация только для чтения сначала подключается к первичной, а затем ищет наиболее доступную для чтения вторичную. Из-за этого следует увеличить время ожидания входа.
ODBC (Интерфейс открытой базы данных)
Добавлены два ключевых слова строки подключения ODBC для поддержки групп доступности AlwaysOn в собственном клиенте SQL Server:
ApplicationIntentMultiSubnetFailover
Дополнительные сведения о ключевых словах строки подключения ODBC в собственном клиенте SQL Server см. в разделе "Использование ключевых слов строки подключения" с собственным клиентом SQL Server.
Эквивалентные свойства подключения:
SQL_COPT_SS_APPLICATION_INTENTSQL_COPT_SS_MULTISUBNET_FAILOVER
Дополнительные сведения о свойствах подключения ODBC в собственном клиенте SQL Server см. в разделе SQLSetConnectAttr.
Функциональные возможности ApplicationIntent ключевых MultiSubnetFailover слов будут предоставлены администратором источника данных ODBC для доменных сетей, использующих драйвер собственного клиента SQL Server, начиная с SQL Server 2012.
Приложение ODBC собственного клиента SQL Server может использовать одну из трех функций для подключения:
| Функция | Описание |
|---|---|
| SQLBrowseConnect | Список серверов, возвращаемых SQLBrowseConnect не будет включать виртуальные сети. Вы увидите только список серверов без каких-либо указаний, является ли сервер автономным сервером, или первичным или вторичным сервером в кластере отказоустойчивой кластеризации Windows Server (WSFC), который содержит два или более экземпляров SQL Server, которые были включены для групп доступности AlwaysOn. Если вы подключаетесь к серверу и получаете сбой, это может быть вызвано тем, что вы подключились к серверу, а ApplicationIntent параметр несовместим с конфигурацией сервера.Поскольку SQLBrowseConnect не распознает серверы в кластере отказоустойчивой кластеризации Windows Server (WSFC), который содержит два или более экземпляров SQL Server, которые были включены для групп доступности AlwaysOn, SQLBrowseConnect игнорирует MultiSubnetFailover ключевое слово строки подключения. |
| SQLConnect |
SQLConnect поддерживает и ApplicationIntentMultiSubnetFailover имя источника данных (DSN) или свойства подключения. |
| SQLDriverConnect |
SQLDriverConnect поддерживает ApplicationIntent и MultiSubnetFailover через ключевые слова строки подключения, свойства подключения или DSN. |
OLE DB
OLE DB в собственном клиенте SQL Server не поддерживает ключевое MultiSubnetFailover слово.
OLE DB в собственном клиенте SQL Server будет поддерживать намерение приложения. Намерение приложения будет вести себя так же для приложений OLE DB, что и для приложений ODBC (см. выше).
Одно ключевое слово строки подключения OLE DB, добавленное для поддержки групп доступности AlwaysOn в собственном клиенте SQL Server:
Application Intent
Дополнительные сведения о ключевых словах строки подключения в собственном клиенте SQL Server см. в разделе "Использование ключевых слов строки подключения" с собственным клиентом SQL Server.
Эквивалентные свойства подключения:
SSPROP_INIT_APPLICATIONINTENTDBPROP_INIT_PROVIDERSTRING
Приложение OLE DB собственного клиента SQL Server может использовать один из методов, чтобы указать намерение приложения:
IDBInitialize::Initialize
IDBInitialize::Initialize использует ранее настроенный набор свойств для инициализации источника данных и создания объекта источника данных. Укажите намерение приложения в качестве свойства поставщика или в составе строки расширенных свойств.
IDataInitialize::GetDataSource
IDataInitialize::GetDataSource принимает строку входного подключения, которая может содержать ключевое Application Intent слово.
IDBProperties::GetProperties
IDBProperties::GetProperties извлекает значение свойства, которое в настоящее время задано в источнике данных. Значение можно получить Application Intent с помощью свойства DBPROP_INIT_PROVIDERSTRING и SSPROP_INIT_APPLICATIONINTENT.
IDBProperties::SetProperties
Чтобы задать ApplicationIntent значение свойства, вызовите IDBProperties::SetProperties передачу SSPROP_INIT_APPLICATIONINTENT свойства со значением "ReadWrite" или "ReadOnly" или DBPROP_INIT_PROVIDERSTRING свойством со значением", содержащим "ApplicationIntent=ReadOnly" или "ApplicationIntent=ReadWrite".
Вы можете указать намерение приложения в поле "Свойства намерения приложения" вкладки "Все" в диалоговом окне "Свойства канала данных ".
При установке неявных подключений неявное подключение будет использовать параметр намерения приложения родительского подключения. Аналогичным образом несколько сеансов, созданных из одного источника данных, наследуют параметр намерения приложения источника данных.
См. также
Компоненты собственного клиента SQL Server
Использование ключевых слов строки подключения с клиентом SQL Server Native Client