Использование зеркального отображения базы данных
Область применения: SQL Server
Примечание.
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте группы доступности AlwaysOn.
Зеркальное отображение базы данных, впервые представленное в SQL Server 2005 (9.x), предназначенное для повышения доступности баз данных и избыточности данных. Драйвер OLE DB для 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-именах, строке соединения, свойстве или атрибуте соединения. Если этого не сделать, OLE DB Driver for SQL Server не будет пытаться отработать отказ для базы данных-участника.
Зеркальное отображение является функциональностью базы данных. Приложения, работающие с несколькими базами данных, возможно, не смогут применить эту функциональность.
Кроме того, в именах сервера не учитывается регистр клавиатуры, но имена баз данных зависят от регистра клавиатуры. Поэтому следует убедиться, что в DSN-именах и строках соединения используются символы с одинаковым регистром.
Драйвер OLE DB для SQL Server
Драйвер OLE DB для SQL Server поддерживает зеркальное отображение базы данных с помощью атрибутов подключения и строки подключения. К набору свойств DBPROPSET_SQLSERVERDBINIT было добавлено свойство SSPROP_INIT_FAILOVERPARTNER, а ключевое слово FailoverPartner является новым атрибутом строки подключения для DBPROP_INIT_PROVIDERSTRING. Дополнительные сведения см. в статье Использование ключевых слов строки подключения с драйвером OLE DB для SQL Server.
Кэш отработки отказа хранится, пока загружен поставщик, то есть до вызова функции CoUninitialize или пока приложение имеет ссылку на некоторый объект, управляемый драйвером OLE DB для SQL Server, например объект источника данных.
Дополнительные сведения о том, как OLE DB Driver for SQL Server поддерживает зеркальное отображение базы данных вы найдете в этой статье.
См. также
Возможности драйвера OLE DB для SQL Server
Подключение клиентов к сеансу зеркального отображения базы данных (SQL Server)
Зеркальное отображение базы данных (SQL Server)