logo
SQL2008_Administration

10.3.5. Смена ролей серверов

При переключении ролей серверов необходимо перенаправить клиентов, которые обращались к серверу-принципалу, на сервер-зеркало.

  1. При использовании подключений по ODBC или OLE DB необходимо производить такое переключение вручную. Это можно сделать, например, изменив настройки на всех клиентских компьютерах, или поменяв имя бывшего зеркального сервера, изменив его IP-адрес и т.п.

  2. Если клиентское приложение использовало для подключения к серверу средства SQL Native Client или ADO.NET Data Provider, клиенты смогут в автоматическом режиме обращаться к новому серверу. Для этого достаточно изначально в строке подключения клиентского приложения указать, кроме основного сервера, еще и запасной сервер, в роли которого будет выступать сервер с зеркальной копией базы данных. Выглядеть такая строка подключения может так:

"server=имя_сервера_принципала; failover partner=имя_зеркального_сервера; database=AdventureWorks"

Про следящий сервер клиентские компьютеры ничего не знают и указывать его в строке подключения не надо.

Три варианта смены ролей серверов при зеркальном отображении баз данных:

  1. автоматическое переключение ролей серверов при выходе из строя сервера-принципала.

Необходимо, чтобы в системе был настроен следящий сервер, а само зеркальное отображение работало в режиме Synchronous with automatic failover.

  1. переключение ролей вручную, когда оба сервера остаются доступными. В этом случае серверы просто меняются ролями;

Этот вариант обычно используется администратором для проверки возможности переключения или для того, чтобы на время отключить сервер-принципал. Эту операцию можно произвести двумя способами:

ALTER DATABASE имя_зеркалированной_базы_данных SET PARTNER FAILOVER

  1. переключение ролей вручную в аварийном режиме, когда сервер-принципал недоступен.

Этот вариант используется в аварийной ситуации, когда сервер-принципал внезапно выходит из строя, а администратору нужно как можно быстрее обеспечить восстановление работоспособности сервера и нормальную работу клиентов. Для выполнения этой операции на сервере, который выполнял роль зеркального, нужно выполнить команду Transact-SQL

ALTER DATABASE имя_зеркалированной_базы_данных SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS

База данных, которая выполняла роль зеркальной копии, будет открыта для пользователей в нормальном режиме.