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


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

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

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

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

Проблема

Сводка

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

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

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

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

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

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

SystemAddress

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 database_name SET PARTNER = 'partner_server'.

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

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

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

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

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

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

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

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

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

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

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

См. также

Основные понятия

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

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