Использование зеркального отображения базы данных в собственном клиенте SQL Server

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Примечание.

Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте группы доступности AlwaysOn.

Внимание

SQL Server Native Client (SNAC) не поставляется с:

  • SQL Server 2022 (16.x) и более поздних версий
  • SQL Server Management Studio 19 и более поздних версий

Собственный клиент SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для разработки новых приложений.

Для новых проектов используйте один из следующих драйверов:

Сведения о SQLNCLI, которые поставляется в качестве компонента SQL Server ядро СУБД (версии 2012–2019), см. в этом исключении жизненного цикла поддержки.

Зеркальное отображение базы данных, впервые представленное в SQL Server 2005 (9.x), предназначенное для повышения доступности баз данных и избыточности данных. Собственный клиент SQL Server обеспечивает неявную поддержку зеркального отображения базы данных, поэтому разработчику не нужно писать код или выполнять какие-либо другие действия после настройки базы данных.

Зеркальное отображение базы данных, которое реализуется на основе каждой базы данных, сохраняет копию рабочей базы данных SQL Server на резервном сервере. Это или «горячий», или «теплый» резервный сервер, в зависимости от конфигурации и состояния сеанса зеркального отображения базы данных. Сервер горячей замены поддерживает быструю отработку отказа без потери зафиксированных транзакций, а «горячий» резервный сервер поддерживает принудительное обслуживание (с возможной потерей данных).

Рабочая база данных называется основной, а резервная копия — зеркальной базой данных. Основная и зеркальная базы данных должны находиться в разных экземплярах SQL Server (экземплярах сервера), а при возможности — на разных компьютерах.

Рабочий экземпляр сервера называется основным сервером. Он соединен с резервным экземпляром сервера, который называется зеркальным сервером. Основной и зеркальный серверы выступают в роли участников сеанса зеркального отображения базы данных. Если основной сервер дает сбой, зеркальный сервер делает свою базу данных основной с помощью процесса, который называется отработкой отказа. Например, имеется два сервера-участника, Partner_A and Partner_B, при этом основная база данных изначально находится на сервере Partner_A (основной сервер), а зеркальная база данных — на сервере Partner_B (зеркальный сервер). Если сервер Partner_A переходит в режим вне сети, база данных на сервере Partner_B становится текущей основной базой данных. Когда сервер Partner_A возвращается в сеанс зеркального отображения, он становится зеркальным сервером, а его база данных — зеркальной базой данных.

Другие конфигурации зеркального отображения баз данных имеют разные уровни производительности и безопасности данных, а также поддерживают разные формы отработки отказа. Дополнительные сведения см. в статье Зеркальное отображение базы данных (SQL Server).

При указании имен зеркальных баз данных можно использовать псевдонимы.

Примечание.

Дополнительные сведения о начальных и повторных попытках подключения к зеркальной базе данных см. в статье Подключение клиентов к сеансу зеркального отображения базы данных (SQL Server).

Замечания по программированию

Если сервер, на котором размещается основная база данных, дает сбой, в ответ на вызовы API клиентское приложение получает ошибки, которые указывают на потерю соединения с базой данных. Если это происходит, все незафиксированные изменения в базе данных теряются и выполняется откат текущей транзакции. При этом приложение должно закрыть соединение (или освободить объект источника данных) и вновь его открыть. Соединение прозрачно перенаправляется на зеркальную базу данных, которая к этому моменту выступает в роли основного сервера.

Когда соединение восстанавливается, основной сервер отправляет клиенту идентификационные данные партнера по обеспечению отработки отказа, который должен использоваться при отработке отказа. Когда приложение пытается установить соединение после сбоя основного сервера, клиент не знает идентификационных данных партнера по обеспечению отработки отказа. Чтобы дать клиенту возможность справиться с этой ситуацией, свойство инициализации и связанное с ним ключевое слово строки соединения позволяют клиенту самому определить удостоверение партнера по обеспечению отработки отказа. Атрибут клиента используется только в этом сценарии. Если основной сервер доступен, он не применяется. Если сервер-партнер по обеспечению отработки отказа, предоставленный клиентом, не играет роль партнера по обеспечению отработки отказа, в соединении будет отказано. Чтобы дать приложениям возможность адаптироваться к изменениям конфигурации, идентификационные данные фактического партнера по обеспечению отработки отказа определяются по атрибуту после установки соединения. Необходимо предусмотреть кэширование сведений об участнике для обновления строки соединения или разработать способ повторной попытки соединения, если первая попытка завершится неудачей.

Примечание.

Следует явно задать базу данных, которая будет использоваться в соединении, если эту возможность нужно использовать в DSN-именах, строке соединения, свойстве или атрибуте соединения. Sql Server Native Client не попытается выполнить отработку отказа в партнерской базе данных, если это не сделано.

Зеркальное отображение является функциональностью базы данных. Приложения, работающие с несколькими базами данных, возможно, не смогут применить эту функциональность.

Кроме того, в именах сервера не учитывается регистр клавиатуры, но имена баз данных зависят от регистра клавиатуры. Поэтому следует убедиться, что в DSN-именах и строках соединения используются символы с одинаковым регистром.

Поставщик OLE DB для собственного клиента SQL Server

Поставщик OLE DB собственного клиента SQL Server поддерживает зеркальное отображение базы данных через подключение и строка подключения атрибуты. К набору свойств DBPROPSET_SQLSERVERDBINIT было добавлено свойство SSPROP_INIT_FAILOVERPARTNER, а ключевое слово FailoverPartner является новым атрибутом строки подключения для DBPROP_INIT_PROVIDERSTRING. Дополнительные сведения см. в разделе "Использование ключевых слов строки подключения" с собственным клиентом SQL Server.

Кэш отработки отказа сохраняется до загрузки поставщика, который до вызова CoUninitialize или до тех пор, пока приложение имеет ссылку на какой-либо объект, управляемый поставщиком OLE DB собственного клиента SQL Server, например объектом источника данных.

Дополнительные сведения о поддержке поставщика OLE DB собственного клиента SQL Server см. в разделе "Свойства инициализации и авторизации".

Драйвер ODBC для собственного клиента SQL Server

Драйвер ODBC собственного клиента SQL Server поддерживает зеркальное отображение базы данных через подключение и строка подключения атрибуты. В частности, атрибут SQL_COPT_SS_FAILOVER_PARTNER добавлен для использования с функциями SQLSetConnectAttr и SQLGetConnectAttr, а ключевое слово Failover_Partner добавлено в качестве нового атрибута строка подключения.

Кэш отработки отказа хранится, пока в приложении имеется хотя бы один дескриптор среды. Он теряется при освобождении дескриптора среды.

Примечание.

Диспетчер драйвера ODBC улучшен для поддержки спецификации имени сервера отработки отказа.

См. также

Компоненты собственного клиента SQL Server
Подключение клиентов к сеансу зеркального отображения базы данных (SQL Server)
Зеркальное отображение базы данных (SQL Server)