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

Область применения:SQL Server

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

Caution

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

Внимание

Зеркальное отображение базы данных в SQL Server — это отдельная технология зеркального отображения базы данных Microsoft Fabric. Зеркальное отображение в Fabric обеспечивает более высокую аналитическую производительность, возможность объединения ресурсов данных с OneLake в Fabric и открытие доступа к данным в формате Delta Parquet.

С помощью зеркального отображения в Microsoft Fabric вы можете непрерывно реплицировать существующий объект данных непосредственно в OneLake в Fabric, включая данные из SQL Server 2016+, Базу данных SQL Azure, Управляемый экземпляр SQL Azure, Cosmos DB, Oracle, Snowflake и многое другое.

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

Проблема Итоги
Сообщение об ошибке 1418 Это сообщение SQL Server указывает, что сетевой адрес сервера не может быть достигнут или не существует, и предполагается, что вы проверяете имя сетевого адреса и повторно возвращаете команду.
Учетные записи Описывает требования для правильной настройки учетных записей, в которых выполняется SQL Server.
Конечные точки Обсуждаются требования к правильной настройке конечной точки зеркального отображения базы данных для каждого экземпляра сервера.
SystemAddress Обобщаются альтернативы указанию системного имени экземпляра сервера в конфигурации зеркального отображения базы данных.
Сетевой доступ Документирует требования, согласно которым каждому экземпляру сервера разрешается доступ к портам других экземпляров сервера по протоколу TCP.
Подготовка зеркальной базы данных Содержит сводку требований к подготовке зеркальной базы данных для запуска зеркалирования.
Ошибка операции по созданию файла Описывается обработка сбоев при выполнении операции создания файла.
Запуск зеркального отображения (язык Transact-SQL) Описывает требуемый порядок инструкций ALTER DATABASEdatabase_nameSET 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. Если при настройке зеркального отображения базы данных возникают проблемы, которые трудно объяснить, мы рекомендуем проверить каждый экземпляр сервера, чтобы определить, настроен ли он на прослушивание правильных портов.

  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. Проверьте, что ROLE указан правильно. На каждом экземпляре сервера выполните следующую инструкцию 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-адресом (предпочтительно статическим IP-адресом). Использование полного имени домена гарантированно работает. Дополнительные сведения см. в статье Указание сетевого адреса сервера (зеркальное отображение базы данных).

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

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

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

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

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

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

Внимание

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

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

Дополнительные сведения см. в статье Подготовка зеркальной базы данных к зеркальному отображению (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 DATABASEdatabase_name PARTNER SETpartner_server' очень важен.

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

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

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

Примечание.

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

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

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

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

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

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

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

См. также

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