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


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

Примечание

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

Зеркальное отображение базы данных, введенное в SQL Server 2005 г., — это решение для повышения доступности баз данных и избыточности данных. SQL Server Native Client обеспечивает неявную поддержку зеркального отображения базы данных, поэтому разработчику не нужно писать код или предпринимать другие действия после настройки для базы данных.

Зеркальное отображение базы данных, реализованное отдельно для каждой базы данных, хранит копию рабочей базы данных 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

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

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

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

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

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

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

Примечание

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

См. также:

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