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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

В этом разделе приводятся сведения об устранении неполадок при установке сеанса зеркального отображения базы данных.This topic provides information to help you troubleshoot problems in setting up a database mirroring session.

Примечание

Убедитесь в том, что выполняются все предварительные условия для зеркального отображения базы данных.Ensure that you are meeting all the prerequisites for database mirroring.

ПроблемаIssue СводкаSummary
Сообщение об ошибке 1418Error Message 1418 Данное сообщение SQL ServerSQL Server указывает на то, что сетевой адрес сервера недоступен или не существует, и предполагает выполнение проверки имени сетевого адреса и повторное выполнение команды.This SQL ServerSQL Server message indicates that the server network address cannot be reached or does not exist, and it suggests that you verify the network address name and reissue the command.
Измерение счетовAccounts Обсуждаются требования к правильной настройке учетных записей, под которыми работает SQL ServerSQL Server .Discusses requirements for correctly configuring the accounts under which SQL ServerSQL Server is running.
Конечные точкиEndpoints Обсуждаются требования к правильной настройке конечной точки зеркального отображения базы данных для каждого экземпляра сервера.Discusses requirements for correctly configuring the database mirroring endpoint of each server instance.
SystemAddressSystemAddress Обобщаются альтернативы указанию системного имени экземпляра сервера в конфигурации зеркального отображения базы данных.Summarizes the alternatives for specifying the system name of a server instance in a database mirroring configuration.
Сетевой доступNetwork access Документирует требования, согласно которым каждому экземпляру сервера разрешается доступ к портам других экземпляров сервера по протоколу TCP.Documents the requirement that each the server instance be able to access the ports of the other server instance or instances over TCP.
Подготовка зеркальной базы данныхMirror database preparation Обобщаются требования к подготовке зеркальной базы данных для включения зеркального отображения.Summarizes the requirements for preparing the mirror database to enable mirroring to start.
Ошибка операции по созданию файлаFailed create-file operation Описывается обработка сбоев при выполнении операции создания файла.Describes how to respond to a failed create-file operation.
Запуск зеркального отображения (язык Transact-SQL)Starting mirroring by Using Transact-SQL Описывается, в каком порядке должны выполняться инструкции ALTER DATABASE имя_базы_данных SET PARTNER =' сервер_участник ' .Describes the required order for ALTER DATABASE database_name SET PARTNER ='partner_server' statements.
Межбазовые транзакцииCross-Database Transactions Автоматический переход на другой ресурс может привести к автоматическому и, возможно, неверному разрешению проблемных транзакций.An automatic failover could lead to automatic and possibly incorrect resolution of in-doubt transactions. По этой причине зеркальное отображение базы данных не поддерживает транзакции между базами данных.For this reason database mirroring does not support cross-database transactions.

Измерение счетовAccounts

Учетные записи, под которыми работает SQL ServerSQL Server , должны быть правильно настроены.The accounts under which SQL ServerSQL Server is running must be correctly configured.

  1. Имеют ли учетные записи нужные разрешения?Do the accounts have the correct permissions?

    1. Если учетные записи выполняются в одном домене, шанс неправильной настройки уменьшается.If the accounts are running in the same domain accounts, the chances of misconfiguration are reduced.

    2. Если учетные записи работают в разных доменах или не являются учетными записями домена, то в базе данных master на другом компьютере необходимо создать имя входа для учетной записи и предоставить ему разрешение CONNECT на конечную точку.If the accounts are running in different domains or are not domain accounts, the login of one account must be created in master on the other computer, and that login must be granted CONNECT permissions on the endpoint. Дополнительные сведения см. в статье Управление метаданными при обеспечении доступности базы данных на другом экземпляре сервера (SQL Server).For more information, see Manage Metadata When Making a Database Available on Another Server Instance (SQL Server). Эти требования распространяются на учетную запись сетевой службы.This includes the Network Service account.

  2. Если SQL ServerSQL Server выполняется как служба под локальной системной учетной записью, то для проверки подлинности необходимо использование сертификатов.If SQL ServerSQL Server is running as a service that is using the local system account, you must use certificates for authentication. Дополнительные сведения см. в разделе Использование сертификатов для конечной точки зеркального отображения базы данных (Transact-SQL).For more information, see Use Certificates for a Database Mirroring Endpoint (Transact-SQL).

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

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

  1. Убедитесь, что в каждом экземпляре сервера (основного, зеркального и следящего, если он есть) есть конечная точка зеркального отображения базы данных.Make sure that each server instance (the principal server, mirror server, and witness, if any) has a database mirroring endpoint. Дополнительные сведения см. в разделе sys.database_mirroring_endpoints (Transact-SQL), а также в зависимости от режима проверки подлинности в разделе Создание конечной точки зеркального отображения базы данных с проверкой подлинности Windows (Transact-SQL) или Использование сертификатов для конечной точки зеркального отображения базы данных (Transact-SQL).For more information, see sys.database_mirroring_endpoints (Transact-SQL) and, depending on the form of authentication, either Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL) or Use Certificates for a Database Mirroring Endpoint (Transact-SQL).

  2. Убедитесь, что номера портов правильны.Check that the port numbers are correct.

    Определить порт, в настоящее время связанный с конечной точкой зеркального отображения базы данных экземпляра сервера, можно через представления каталога sys.database_mirroring_endpoints и sys.tcp_endpoints .To identify the port currently associated with database mirroring endpoint of a server instance, use the sys.database_mirroring_endpoints and sys.tcp_endpoints catalog views.

  3. Если при зеркальном отображении базы данных возникают труднообъяснимые неполадки, рекомендуется на каждом экземпляре сервера проверить, правильный ли порт он прослушивает.For database mirroring setup issues that are difficult to explain, we recommend that you inspect each server instance to determine whether it is listening on the correct ports.

  4. Убедитесь, что конечные точки запущены (STATE=STARTED).Make sure that the endpoints are started (STATE=STARTED). На каждом экземпляре сервера выполните следующую инструкцию Transact-SQLTransact-SQL:On each server instance, use the following Transact-SQLTransact-SQL statement.

    SELECT state_desc FROM sys.database_mirroring_endpoints  
    

    Дополнительные сведения о столбце state_desc см. в разделе sys.database_mirroring_endpoints (Transact-SQL).For more information about the state_desc column, see sys.database_mirroring_endpoints (Transact-SQL).

    Чтобы запустить конечную точку, выполните следующую инструкцию Transact-SQLTransact-SQL:To start an endpoint, use the following Transact-SQLTransact-SQL statement.

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

    Дополнительные сведения см. в статье ALTER ENDPOINT (Transact-SQL).For more information, see ALTER ENDPOINT (Transact-SQL).

  5. Убедитесь, что роль выбрана правильно.Check that the ROLE is correct. На каждом из экземпляров сервера выполните следующую инструкцию Transact-SQLTransact-SQL.On each server instance use the following Transact-SQLTransact-SQL statement.

    SELECT role FROM sys.database_mirroring_endpoints;  
    GO  
    

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

  6. Применение имени входа для учетной записи службы от другого экземпляра сервера требует наличия разрешения CONNECT.The login for the service account from the other server instance requires CONNECT permission. Убедитесь, что имени входа на другом сервере предоставлено разрешение CONNECT.Make sure that the login from the other server has CONNECT permission. Чтобы узнать, кто имеет разрешение CONNECT для конечной точки, выполните следующую инструкцию Transact-SQLTransact-SQL на каждом экземпляре сервера:To determine who has CONNECT permission for an endpoint, on each server instance use the following Transact-SQLTransact-SQL statement.

    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  
    
    

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

В качестве системного имени экземпляра сервера в конфигурации зеркального отображения базы данных можно использовать любое имя, которое однозначно идентифицирует систему.For the system name of a server instance in a database mirroring configuration, you can use any name that unambiguously identifies the system. Адрес сервера может представлять собой системное имя (если системы находятся в одном), полное доменное имя или IP-адрес (желательно статический).The server address can be a system name (if the systems are in the same domain), a fully qualified domain name, or an IP address (preferably, a static IP address). Полное доменное имя будет работать гарантированно.Using the fully qualified domain name is guaranteed to work. Дополнительные сведения см. в разделе Указание сетевого адреса сервера (зеркальное отображение базы данных).For more information, see Specify a Server Network Address (Database Mirroring).

Network AccessNetwork Access

Каждому экземпляру сервера требуется доступ к портам других экземпляров сервера по протоколу TCP.Each server instance must be able to access the ports of the other server instance or instances over TCP. Это особенно важно, если экземпляры сервера находятся в разных доменах, не имеющих доверительных отношений друг с другом (домены без доверия).This is especially important if the server instances are in different domains that do not trust each other (untrusted domains). Это во многом ограничивает связь между экземплярами сервера.This restricts much of the communication between the server instances.

Mirror Database PreparationMirror Database Preparation

При первом запуске зеркального отображения или повторном запуске после удаления зеркального отображения убедитесь, что зеркальная база данных подготовлена.Whether starting mirroring for the first time or starting it again after mirroring was removed, verify that the mirror database is prepared for mirroring.

При создании зеркальной базы данных на зеркальном сервере убедитесь, что резервная копия основной базы данных восстановлена. Для этого укажите имя базы данных в предложении WITH NORECOVERY.When you create the mirror database on the mirror server, make sure that you restore the backup of the principal database specifying the same database name WITH NORECOVERY. Кроме того, все резервные копии журналов, созданные после резервного копирования этой базы данных, также должны быть созданы с использованием предложения WITH NORECOVERY.Also, all log backups created after that backup was taken must also be applied, again WITH NORECOVERY.

Кроме того, рекомендуется, чтобы путь к файлу зеркальной базы данных (включая имя диска) по возможности совпадал с путем к основной базе данных.Also, we recommend that, if it is possible, the file path (including the drive letter) of the mirror database be identical to the path of the principal database. Если пути к файлам должны различаться, например если основная база данных расположена на диске «F:», а в зеркальной системе нет диска «F:», необходимо включить в инструкцию RESTORE параметр MOVE.If the file paths must differ, for example, if the principal database is on drive 'F:' but the mirror system lacks an F: drive, you must include the MOVE option in the RESTORE statement.

Важно!

Если при создании зеркальной базы данных переносятся файлы базы данных, то последующее добавление файлов к базе данных не всегда возможно без прекращения зеркального отображения.If you move the database files when you are creating the mirror database, you might be unable to add files to the database later without mirroring being suspended.

Если зеркальное отображение базы данных остановлено, то перед его повторным запуском к зеркальной базе данных необходимо применить все последующие резервные копии журналов, полученные с основной базы данных.If database mirroring has been stopped, all subsequent log backups taken on the principal database must be applied to the mirror database before mirroring can be restarted.

Дополнительные сведения см. в статье Prepare a Mirror Database for Mirroring (SQL Server).For more information, see Prepare a Mirror Database for Mirroring (SQL Server).

Failed Create-File OperationFailed Create-File Operation

Чтобы добавление файла не повлияло на сеанс зеркального отображения, путь к файлам должен существовать на обоих серверах.Adding a file without impacting a mirroring session requires that the path of the file exist on both servers. Поэтому перемещение файлов базы данных во время создания зеркального отображения может привести к его ошибке или остановке при выполнении операции добавления файла.Therefore, if you move the database files when creating the mirror database, a later add-file operation might fail on the mirror database and cause mirroring to be suspended.

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

  1. Владелец базы данных должен удалить сеанс зеркального отображения и восстановить полную резервную копию файловой группы, содержащей добавленный файл.The database owner must remove the mirroring session and restore a full backup of the filegroup that contains the added file.

  2. Затем необходимо создать резервную копию журналов, содержащего операцию добавления файла, на основном сервере и вручную восстановить резервную копию на зеркальной базе данных с помощью параметров WITH NORECOVERY и WITH MOVE.The owner must then back up the log containing the add-file operation on the principal server and manually restore the log backup on the mirror database using the WITH NORECOVERY and WITH MOVE options. Эти действия приведут к созданию указанного пути к файлу на зеркальном сервере и восстановлению нового файла по этому пути.Doing this creates the specified file path on the mirror server and restores the new file to that location.

  3. Чтобы подготовить базу данных для нового сеанса зеркального отображения, владельцу также необходимо восстановить с параметром WITH NO RECOVERY все необработанные резервные копии журналов с основного сервера.To prepare the database for a new mirroring session, the owner must also restore WITH NO RECOVERY any other outstanding log backups from the principal server.

Дополнительные сведения см. в разделе Удаление зеркального отображения базы данных (SQL Server), Подготовка зеркальной базы данных к зеркальному отображению (SQL Server), Создание сеанса зеркального отображения базы данных с использованием проверки подлинности Windows (Transact-SQL), Использование сертификатов для конечной точки зеркального отображения базы данных (Transact-SQL) или Создание сеанса зеркального отображения базы данных с использованием проверки подлинности Windows (среда SQL Server Management Studio).For more information, see Removing Database Mirroring (SQL Server), Prepare a Mirror Database for Mirroring (SQL Server), Establish a Database Mirroring Session Using Windows Authentication (Transact-SQL), Use Certificates for a Database Mirroring Endpoint (Transact-SQL), or Establish a Database Mirroring Session Using Windows Authentication (SQL Server Management Studio).

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

Порядок выполнения инструкций ALTER DATABASE имя_базы_данных SET PARTNER =' сервер_участник ' очень важен.The order in which the ALTER DATABASE database_name SET PARTNER ='partner_server' statements are issued is very important.

  1. Первая инструкция должна выполняться на зеркальном сервере.The first statement must be run on the mirror server. В этот момент зеркальный сервер не пытается соединиться с каким бы то ни было другим экземпляром сервера.When this statement is issued, the mirror server does not try to contact any other server instance. Вместо этого он предписывает своей базе данных ждать, пока основной сервер не свяжется с зеркальным сервером.Instead, the mirror server instructs its database to wait until the mirror server has been contacted by the principal server.

  2. Вторая инструкция ALTER DATABASE должна выполняться на основном сервере.The second ALTER DATABASE statement must be run on the principal server. Она предписывает основному серверу подключиться к зеркальному.This statement causes the principal server to try to connect to the mirror server. После создания этого соединения зеркальный сервер пытается подключиться к основному серверу через другое соединение.After that connection is created, the mirror then tries to connect to the principal server on another connection.

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

Примечание

Сведения о запуске зеркального отображения в среде SQL Server Management StudioSQL Server Management Studio см. в разделе Создание сеанса зеркального отображения базы данных с использованием проверки подлинности Windows (среда SQL Server Management Studio).For information about using SQL Server Management StudioSQL Server Management Studio to start mirroring, see Establish a Database Mirroring Session Using Windows Authentication (SQL Server Management Studio).

Межбазовые транзакцииCross-Database Transactions

Если база данных зеркально отображается в режиме высокого уровня безопасности с автоматической отработкой отказа, то она может привести к неверному разрешению проблемных транзакций.When a database is being mirrored in high-safety mode with automatic failover, an automatic failover could lead to automatic and possibly incorrect resolution of in-doubt transactions. Если автоматическая отработка отказа на зеркальную базу данных происходит во время фиксации межбазовой транзакции, то между этими базами данных может возникнуть логическая несогласованность.If an automatic failover occurs on either database while a cross-database transaction is being committed, logical inconsistencies can occur between the databases.

Межбазовые транзакции, на которые может повлиять автоматическая отработка отказа, могут относиться к следующим типам:The types of cross-database transactions that can be affected by an automatic failover include the following:

  • транзакции, обновляющие несколько баз данных в одном экземпляре SQL ServerSQL Server;A transaction that is updating multiple databases in the same instance of SQL ServerSQL Server.

  • Транзакции, использующие координатор распределенных транзакций MicrosoftMicrosoft (MS DTC).Transactions that use a MicrosoftMicrosoft Distributed Transaction Coordinator (MS DTC).

Дополнительные сведения см. в статье Транзакции между базами данных и распределенные транзакции для групп доступности AlwaysOn и зеркального отображения базы данных (SQL Server).For more information, see Cross-Database Transactions and Distributed Transactions for Always On Availability Groups and Database Mirroring (SQL Server).

См. также:See Also

Настройка зеркального отображения базы данных (SQL Server) Setting Up Database Mirroring (SQL Server)
Безопасность транспорта для зеркального отображения баз данных и групп доступности AlwaysOn (SQL Server)Transport Security for Database Mirroring and Always On Availability Groups (SQL Server)