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

ПримечаниеПримечание

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

Зеркальное отображение базы данных, впервые представленное в SQL Server 2005, — это решение, предназначенное для повышения доступности баз данных и избыточности данных. Собственный клиент 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 не будет пытаться отработать отказ базы данных-участника.

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

Кроме того, в именах сервера не учитывается регистр клавиатуры, но имена баз данных зависят от регистра клавиатуры. Поэтому следует убедиться, что в 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