Диагностика конфигурации зеркального отображения базы данных (SQL Server)

Область применения: SQL Server (все поддерживаемые версии)

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

Примечание

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

Проблема Сводка
Сообщение об ошибке 1418 Данное сообщение SQL Server указывает на то, что сетевой адрес сервера недоступен или не существует, и предполагает выполнение проверки имени сетевого адреса и повторное выполнение команды.
Измерение счетов Обсуждаются требования к правильной настройке учетных записей, под которыми работает SQL Server .
Конечные точки Обсуждаются требования к правильной настройке конечной точки зеркального отображения базы данных для каждого экземпляра сервера.
SystemAddress Обобщаются альтернативы указанию системного имени экземпляра сервера в конфигурации зеркального отображения базы данных.
Сетевой доступ Документирует требования, согласно которым каждому экземпляру сервера разрешается доступ к портам других экземпляров сервера по протоколу TCP.
Подготовка зеркальной базы данных Обобщаются требования к подготовке зеркальной базы данных для включения зеркального отображения.
Ошибка операции по созданию файла Описывается обработка сбоев при выполнении операции создания файла.
Запуск зеркального отображения (язык Transact-SQL) Описывается, в каком порядке должны выполняться инструкции ALTER DATABASE имя_базы_данных SET PARTNER ='сервер_участник' .
Межбазовые транзакции Автоматический переход на другой ресурс может привести к автоматическому и, возможно, неверному разрешению проблемных транзакций. По этой причине зеркальное отображение базы данных не поддерживает транзакции между базами данных.

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

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

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

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

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

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

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

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

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

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

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

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

  4. Убедитесь, что конечные точки запущены (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).

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

    SELECT role FROM sys.database_mirroring_endpoints;  
    GO  
    

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

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

Важно!

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

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

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

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

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

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

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

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

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

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

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

Порядок выполнения инструкций ALTER DATABASE имя_базы_данных SET PARTNER ='сервер_участник' очень важен.

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

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

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

Примечание

Сведения о запуске зеркального отображения в среде SQL Server Management Studio см. в разделе Создание сеанса зеркального отображения базы данных с использованием проверки подлинности Windows (среда SQL Server Management Studio).

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

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

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

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

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

Дополнительные сведения см. в статье Транзакции между базами данных и распределенные транзакции для групп доступности AlwaysOn и зеркального отображения базы данных (SQL Server).

См. также:

Настройка зеркального отображения базы данных (SQL Server)
Безопасность транспорта для зеркального отображения баз данных и групп доступности AlwaysOn (SQL Server)