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

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

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

Убедитесь, что соблюдаются все предварительные условия для зеркального отображения баз данных.

Неполадка

Сводка

Учетные записи

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

Конечные точки

Обсуждаются требования к правильной настройке конечной точки зеркального отображения базы данных для каждого экземпляра сервера.

Системный адрес

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

Сетевой доступ

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

Подготовка зеркальной базы данных

Обобщаются требования к подготовке зеркальной базы данных для включения зеркального отображения.

Ошибка операции по созданию файла

Описывается обработка сбоев при выполнении операции создания файла.

Запуск зеркального отображения (Transact-SQL)

Описывает нужный порядок инструкций ALTER DATABASE database_name SET PARTNER ='partner_server'.

Учетные записи

Учетные записи, под которыми работает SQL Server, должны быть правильно настроены.

  1. Имеют ли учетные записи нужные разрешения?

    1. Если учетные записи выполняются в одном домене, шанс неправильной настройки уменьшается.

    2. Если учетные записи работают в разных доменах или не являются учетными записями домена, то в базе данных master на другом компьютере необходимо создать имя входа для учетной записи и предоставить ему разрешение CONNECT на конечную точку. Дополнительные сведения см. в разделе Управление метаданными при обеспечении доступности базы данных на другом экземпляре сервера. Эти требования распространяются на учетную запись сетевой службы.

  2. Если SQL Server выполняется как служба под локальной системной учетной записью, то для проверки подлинности необходимо использование сертификатов. Дополнительные сведения см. в разделе Использование сертификатов для зеркального отображения базы данных

Конечные точки

Конечные точки должны быть правильно настроены.

  1. Убедитесь, что в каждом экземпляре сервера (основного, зеркального и следящего, если он есть) есть конечная точка зеркального отображения базы данных. Дополнительные сведения см. в разделе sys.database_mirroring_endpoints (Transact-SQL), а также в зависимости от режима проверки подлинности в разделе Как создать конечную точку зеркального отображения базы данных с проверкой подлинности Windows (Transact-SQL) или Как включить использование сертификатов для исходящих соединений при зеркальном отображении базы данных (Transact-SQL).

  2. Убедитесь, что номера портов правильны.

    Определить порт, в настоящее время связанный с конечной точкой зеркального отображения базы данных экземпляра сервера, можно через представления каталога sys.database_mirroring_endpoints и sys.tcp_endpoints.

  3. Имя входа для учетной записи службы от другого экземпляра сервера требует наличия разрешения CONNECT.

  4. Если при зеркальном отображении базы данных возникают труднообъяснимые неполадки, рекомендуется на каждом экземпляре сервера проверить, правильный ли порт он прослушивает. Сведения о проверке доступности порта см. в разделе MSSQLSERVER_1418.

  5. Убедитесь, что конечные точки запущены (STATE=STARTED). На каждом экземпляре сервера выполните следующую инструкцию Transact-SQL: 

    SELECT state_desc FROM sys.database_mirroring_endpoints
    

    Дополнительные сведения о столбце state_desc см. в разделе sys.database_mirroring_endpoints (Transact-SQL).

    Чтобы запустить конечную точку, выполните следующую инструкцию Transact-SQL:

    ALTER ENDPOINT Endpoint_Mirroring 
    STATE = STARTED 
    AS TCP (LISTENER_PORT = <port_number>)
    FOR database_mirroring (ROLE = ALL);
    GO
    

    Дополнительные сведения см. в разделе ALTER ENDPOINT (Transact-SQL).

  6. Убедитесь, что роль выбрана правильно. На каждом экземпляре сервера выполните следующую инструкцию Transact-SQL:

    SELECT role FROM sys.database_mirroring_endpoints;
    GO
    

    Дополнительные сведения см. в разделе sys.database_mirroring_endpoints (Transact-SQL).

  7. Убедитесь, что имени входа на другом сервере предоставлено разрешение CONNECT. Чтобы узнать, кто имеет разрешение CONNECT для конечной точки, выполните следующую инструкцию Transact-SQL на каждом экземпляре сервера:

    SELECT 'Metadata Check';
    SELECT EP.name, SP.STATE, 
       CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id)) 
          AS GRANTOR, 
       SP.TYPE AS PERMISSION,
       CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id)) 
          AS GRANTEE 
       FROM sys.server_permissions SP , sys.endpoints EP
       WHERE SP.major_id = EP.endpoint_id
       ORDER BY Permission,grantor, grantee; 
    GO
    

Системный адрес

В качестве системного имени экземпляра сервера в конфигурации зеркального отображения базы данных можно использовать любое имя, которое однозначно идентифицирует систему. Адрес сервера может представлять собой системное имя (если системы находятся в одном), полное доменное имя или IP-адрес (желательно статический). Полное доменное имя будет работать гарантированно. Дополнительные сведения см. в разделе Указание сетевого адреса сервера для зеркального отображения базы данных.

Сетевой доступ

Каждому экземпляру сервера требуется доступ к портам других экземпляров сервера по протоколу TCP. Это особенно важно, если экземпляры сервера находятся в разных доменах, не имеющих доверительных отношений друг с другом (домены без доверия). Это во многом ограничивает связь между экземплярами сервера.

Подготовка зеркальной базы данных

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

При создании зеркальной базы данных на зеркальном сервере убедитесь, что резервная копия основной базы данных восстановлена. Для этого укажите имя базы данных в предложении WITH NORECOVERY. Кроме того, все резервные копии журналов, созданные после резервного копирования этой базы данных, также должны быть созданы с использованием предложения WITH NORECOVERY.

Кроме того, рекомендуется, чтобы путь к зеркальной базе данных (включая имя диска) по возможности совпадал с путем к основной базе данных. Если размещение файлов должно быть другим, например если основная база данных находится на диске F:, а в зеркальной системе диск F: отсутствует. то в инструкцию RESTORE следует включить параметр MOVE.

Важное примечаниеВажно!

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

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

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

Ошибка операции по созданию файла

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

Чтобы решить эту проблему, выполните следующие действия.

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

  2. Затем необходимо создать резервную копию журналов, содержащего операцию добавления файла, на основном сервере и вручную восстановить резервную копию на зеркальной базе данных с помощью параметров WITH NORECOVERY и WITH MOVE. Эти действия приведут к созданию указанного пути к файлу на зеркальном сервере и восстановлению нового файла по этому пути.

  3. Чтобы подготовить базу данных для нового сеанса зеркального отображения, владельцу также необходимо восстановить с параметром WITH NO RECOVERY все необработанные резервные копии журналов с основного сервера.

Дополнительные сведения см. в разделах Удаление зеркального отображения базы данных, Как подготовить зеркальную базу данных для зеркального отображения (Transact-SQL), Как создать сеанс зеркального отображения базы данных с использованием проверки подлинности Windows (Transact-SQL), Использование сертификатов для зеркального отображения базы данных или Как настроить сеанс зеркального отображения базы данных (среда SQL Server Management Studio).

Запуск зеркального отображения (язык Transact-SQL)

Очень важен порядок, в котором запускаются инструкции ALTER DATABASE database_name SET PARTNER ='partner_server'.

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

  2. Вторая инструкция ALTER DATABASE должна выполняться на основном сервере. Она предписывает основному серверу подключиться к зеркальному. После создания этого соединения зеркальный сервер пытается подключиться к основному серверу через другое соединение.

Дополнительные сведения см. в разделе ALTER DATABASE (Transact-SQL).

Сообщение об ошибке 1418

Это сообщение SQL Server указывает, что сетевой адрес сервера недоступен или не существует, и предполагает выполнение проверки имени сетевого адреса и повторное выполнение команды. Дополнительные сведения см. в разделе MSSQLSERVER_1418.

Межбазовые транзакции

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

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

  • транзакции, обновляющие несколько баз данных в одном экземпляре SQL Server;

  • транзакции, использующие координатор распределенных транзакций (Майкрософт) (MS DTC).

Дополнительные сведения см. в разделе Зеркальное отображение базы данных и межбазовые транзакции.