Поиск и устранение неисправностей конфигурации групп доступности AlwaysOn (SQL Server)Troubleshoot Always On Availability Groups 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

Этот раздел содержит сведения об устранении типичных проблем, возникающих при настройке экземпляров сервера для Группы доступности AlwaysOnAlways On availability groups.This topic provides information to help you troubleshoot typical problems with configuring server instances for Группы доступности AlwaysOnAlways On availability groups. Примеры типичных проблем настройки: Группы доступности AlwaysOnAlways On availability groups отключен, учетные записи настроены неправильно, конечная точка зеркального отображения баз данных не существует, конечная точка недоступна (ошибка SQL Server 1418), отсутствует сетевой доступ, команда присоединения базы данных завершается с ошибкой (ошибка SQL Server 35250).Typical configuration problems include Группы доступности AlwaysOnAlways On availability groups is disabled, accounts are incorrectly configured, the database mirroring endpoint does not exist, the endpoint is inaccessible (SQL Server Error 1418), network access does not exist, and a join database command fails (SQL Server Error 35250).

Примечание

Проверьте, выполняются ли предварительные требования Группы доступности AlwaysOnAlways On availability groups .Ensure that you are meeting the Группы доступности AlwaysOnAlways On availability groups prerequisites. Дополнительные сведения см. в разделе Предварительные требования, ограничения и рекомендации для групп доступности AlwaysOn (SQL Server).For more information, see Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

В этом разделе:In This Topic:

РазделSection ОписаниеDescription
Функция групп доступности AlwaysOn не включенаAlways On Availability Groups Is Not Enabled Если экземпляр SQL ServerSQL Server не включен для Группы доступности AlwaysOnAlways On availability groups, то экземпляр не поддерживает создание групп доступности и на нем не могут размещаться реплики доступности.If an instance of SQL ServerSQL Server is not enabled for Группы доступности AlwaysOnAlways On availability groups, the instance does not support availability group creation and cannot host any availability replicas.
Измерение счетовAccounts Обсуждаются требования к правильной настройке учетных записей, под которыми работает SQL ServerSQL Server .Discusses requirements for correctly configuring the accounts under which SQL ServerSQL Server is running.
Конечные точкиEndpoints Описывается диагностика проблем конечной точки зеркального отображения баз данных для экземпляра сервера.Discusses how to diagnose issues with the database mirroring endpoint of a server instance.
Имя системыSystem name Обобщаются альтернативы указанию системного имени экземпляра сервера в URL-адресе конечной точки.Summarizes the alternatives for specifying the system name of a server instance in an endpoint URL.
Сетевой доступNetwork access Документирует требование к каждому экземпляру сервера, на котором размещается реплика доступности, чтобы каждый такой экземпляр имел доступ к порту каждого другого экземпляра сервера по протоколу TCP.Documents the requirement that each server instance that is hosting an availability replica must be able to access the port of each of the other server instances over TCP.
Доступ к конечной точке (ошибка SQL Server 1418)Endpoint Access (SQL Server Error 1418) Содержит сведения об этом сообщении об ошибке SQL ServerSQL Server .Contains information about this SQL ServerSQL Server error message.
Ошибка присоединения базы данных (ошибка SQL Server 35250)Join Database Fails (SQL Server Error 35250) Обсуждаются возможные причины и способы устранения проблемы с присоединением баз данных-получателей к группе доступности, поскольку соединение с первичной репликой неактивно.Discusses the possible causes and resolution of a failure to join secondary databases to an availability group because the connection to the primary replica is not active.
Маршрутизация только для чтения работает неправильноRead-Only Routing is Not Working Correctly
Связанные задачиRelated Tasks Содержит список разбитых по задачам разделов в электронной документации по SQL Server 2017SQL Server 2017 , особенно важных для устранения неполадок с конфигурацией группы.Contains a list of task-oriented topics in SQL Server 2017SQL Server 2017 Books Online that are particularly relevant to troubleshooting an availability group configuration.
См. такжеRelated Content Содержит список важных ресурсов, не входящих в состав электронной документации по SQL ServerSQL Server .Contains a list of relevant resources that are external to SQL ServerSQL Server Books Online.

Функция групп доступности AlwaysOn не включенаAlways On Availability Groups Is Not Enabled

Функция Группы доступности AlwaysOnAlways On availability groups должна быть включена на каждом из экземпляров SQL Server 2017SQL Server 2017.The Группы доступности AlwaysOnAlways On availability groups feature must be enabled on each of the instances of SQL Server 2017SQL Server 2017. Дополнительные сведения см. в разделе Включение и отключение групп доступности AlwaysOn (SQL Server).For more information, see Enable and Disable Always On Availability Groups (SQL Server).

Измерение счетов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. Если участники запущены под одной и той же учетной записью домена, то правильные имена входа существуют в обеих базах данных master .If the partners run as the same domain user account, the correct user logins exist automatically in both master databases. Это рекомендовано и упрощает настройку безопасности базы данных.This simplifies the security configuration the database and is recommended.

    2. Если два экземпляра сервера выполняются под разными учетными записями, то для каждой учетной записи должно быть создано имя входа в базе данных master на удаленном экземпляре сервера и этому имени входа необходимо присвоить разрешения CONNECT для подключения к конечной точке зеркального отображения базы данных на этом экземпляре сервера.If two server instances run as different accounts, the login each account must be created in master on the remote server instance, and that login must be granted CONNECT permissions to connect to the database mirroring endpoint of that server instance. Дополнительные сведения см. в статье Создание учетных записей для зеркального отображения баз данных или групп доступности AlwaysOn (SQL Server).For more information, seeSet Up Login Accounts for Database Mirroring or Always On Availability Groups (SQL Server).

  2. Если SQL ServerSQL Server выполняется как встроенная учетная запись, например как учетная запись локальной системы, локальной службы, сетевой службы или как недоменная учетная запись, для проверки подлинности конечных точек следует использовать сертификаты.If SQL ServerSQL Server is running as a built-in account, such as Local System, Local Service, or Network Service, or a nondomain account, you must use certificates for endpoint authentication. Если учетные записи служб используют учетные записи доменов в одном домене, вы можете предоставить доступ CONNECT для каждой учетной записи службы на всех расположениях реплики либо воспользоваться сертификатами.If your service accounts are using domain accounts in the same domain, you can choose to grant CONNECT access for each service account on all the replica locations or you can use certificates. Дополнительные сведения см. в разделе Использование сертификатов для конечной точки зеркального отображения базы данных (Transact-SQL).For more information, seeUse Certificates for a Database Mirroring Endpoint (Transact-SQL).

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

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

  1. Убедитесь, что каждый экземпляр SQL ServerSQL Server , на котором планируется размещать реплику доступности (каждое расположение реплики), имеет конечную точку зеркального отображения баз данных.Make sure that each instance of SQL ServerSQL Server that is going to host an availability replica (each replica location) has a database mirroring endpoint. Чтобы определить, существует ли конечная точка зеркального отображения баз данных на данном экземпляре сервера, воспользуйтесь представлением каталога sys.database_mirroring_endpoints.To determine whether a database mirroring endpoint exists on a given server instance, use the sys.database_mirroring_endpoints catalog view. Дополнительные сведения см. в статье Создание конечной точки зеркального отображения базы данных с проверкой подлинности Windows (Transact-SQL) или Включение использования сертификатов для исходящих соединений в конечной точке зеркального отображения базы данных (Transact-SQL).For more information, see either Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL) or Allow a Database Mirroring Endpoint to Use Certificates for Outbound Connections (Transact-SQL).

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

    Чтобы определить, какой порт в текущий момент связан с конечной точкой зеркального отображения базы данных экземпляра сервера, воспользуйтесь следующей инструкцией Transact-SQLTransact-SQL :To identify the port currently associated with database mirroring endpoint of a server instance, use the following Transact-SQLTransact-SQL statement:

    SELECT type_desc, port FROM sys.tcp_endpoints;  
    GO  
    
  3. Если при настройке Группы доступности AlwaysOnAlways On availability groups возникают труднообъяснимые неполадки, рекомендуется на каждом экземпляре сервера проверить, правильный ли порт он прослушивает.For Группы доступности AlwaysOnAlways On availability groups 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. Убедитесь, что имени входа на другом сервере предоставлено разрешение 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 NameSystem Name

В качестве системного имени экземпляра сервера в URL-адресе конечной точки можно использовать любое имя, которое однозначно идентифицирует систему.For the system name of a server instance in an endpoint URL, 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. Дополнительные сведения см. в разделе Указание URL-адреса конечной точки при добавлении или изменении реплики доступности (SQL Server).For more information, see Specify the Endpoint URL When Adding or Modifying an Availability Replica (SQL Server).

Network AccessNetwork Access

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

Доступ к конечной точке (ошибка SQL Server 1418)Endpoint Access (SQL Server Error 1418)

Это сообщение SQL ServerSQL Server уведомляет, что сетевой адрес сервера, указанный в URL-адресе конечной точки сервера, недоступен или не существует, и предлагает выполнить проверку имени сетевого адреса и повторно выполнить команду.This SQL ServerSQL Server message indicates that the server network address specified in the endpoint URL cannot be reached or does not exist, and it suggests that you verify the network address name and reissue the command.

Ошибка присоединения базы данных (ошибка SQL Server 35250)Join Database Fails (SQL Server Error 35250)

В этом разделе обсуждаются возможные причины и способы устранения проблемы с присоединением баз данных-получателей к группе доступности, вызванные тем, что соединение с первичной репликой неактивно.This section discusses the possible causes and resolution of a failure to join secondary databases to the availability group because the connection to the primary replica is not active.

Решение.Resolution:

  1. Проверьте настройку брандмауэра: разрешена ли связь для портов конечных точек между экземплярами серверов, на которых размещаются первичная и вторичная реплика (по умолчанию порт 5022).Check the firewall setting to see if whether allows the endpoint port communication between the server instances that host primary replica and the secondary replica (port 5022 by default).

  2. Проверьте, обладает ли учетная запись сетевой службы разрешением на подключение к конечной точке.Check whether the network service account has connect permission to the endpoint.

Маршрутизация только для чтения работает неправильноRead-Only Routing is Not Working Correctly

Проверьте следующие параметры значений конфигурации и исправьте их при необходимости.Verify the following configuration values settings and correct them if necessary.

Если...On... ДействиеAction КомментарииComments СсылкаLink
ФлажокCheckbox Текущая первичная репликаCurrent primary replica Убедитесь, что прослушиватель группы доступности находится в режиме «в сети».Ensure that the availability group listener is online. Чтобы убедиться, что прослушиватель имеет состояние «в сети», выполните следующие действия.To verify whether the listener is online:

SELECT * FROM sys.dm_tcp_listener_states;

Перезапуск прослушивателя с состоянием «вне сети»To restart an offline listener:

ALTER AVAILABILITY GROUP myAG RESTART LISTENER 'myAG_Listener';
sys.dm_tcp_listener_states (Transact-SQL)sys.dm_tcp_listener_states (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)ALTER AVAILABILITY GROUP (Transact-SQL)
ФлажокCheckbox Текущая первичная репликаCurrent primary replica Убедитесь, что параметр READ_ONLY_ROUTING_LIST содержит только экземпляры сервера, где размещена вторичная реплика.Ensure that the READ_ONLY_ROUTING_LIST contains only server instances that are hosting a readable secondary replica. Определение доступных для чтения вторичных реплик: sys.availability_replicas (столбецsecondary_role_allow_connections_desc )To identify readable secondary replicas: sys.availability_replicas (secondary_role_allow_connections_desc column)

Просмотр списка маршрутизации только для чтения: sys.availability_read_only_routing_listsTo view a read-only routing list: sys.availability_read_only_routing_lists

Изменение списка маршрутизации только для чтения. ALTER AVAILABILITY GROUPTo change a read-only routing list: ALTER AVAILABILITY GROUP
sys.availability_replicas (Transact-SQL)sys.availability_replicas (Transact-SQL)

sys.availability_read_only_routing_lists (Transact-SQL)sys.availability_read_only_routing_lists (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)ALTER AVAILABILITY GROUP (Transact-SQL)
ФлажокCheckbox Каждая реплика в списке read_only_routing_listEvery replica in the read_only_routing_list Убедитесь, что брандмауэр Windows не блокирует порт READ_ONLY_ROUTING_URL.Ensure that the Windows firewall is not blocking the READ_ONLY_ROUTING_URL port. - Настройка брандмауэра Windows для доступа к компоненту Database EngineConfigure a Windows Firewall for Database Engine Access
ФлажокCheckbox Каждая реплика в списке read_only_routing_listEvery replica in the read_only_routing_list В диспетчере конфигурации SQL ServerSQL Server убедитесь в следующем.In SQL ServerSQL Server Configuration Manager, verify that:

Удаленное соединение с SQL Server включено.SQL Server remote connectivity is enabled.

TCP/IP включен.TCP/IP is enabled.

IP-адреса настроены правильно.The IP addresses are configured correctly.
- Просмотр или изменение свойств сервера (SQL Server)View or Change Server Properties (SQL Server)

Настройка сервера для прослушивания указанного TCP-порта (диспетчер конфигурации SQL Server)Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager)
ФлажокCheckbox Каждая реплика в списке read_only_routing_listEvery replica in the read_only_routing_list Убедитесь, что параметр READ_ONLY_ROUTING_URL (TCP://system-address:port) содержит правильное полное доменное имя (FQDN) и номер порта.Ensure that the READ_ONLY_ROUTING_URL (TCP://system-address:port) contains the correct fully-qualified domain name (FQDN) and port number. - Вычисление значения read_only_routing_url для AlwaysOnCalculating read_only_routing_url for Always On

sys.availability_replicas (Transact-SQL)sys.availability_replicas (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)ALTER AVAILABILITY GROUP (Transact-SQL)
ФлажокCheckbox Система клиентаClient system Убедитесь, что драйвер клиента поддерживает маршрутизацию только для чтения.Verify that the client driver supports read-only routing. - Подключение клиента AlwaysOn (SQL Server)Always On Client Connectivity (SQL Server)

Связанные задачиRelated Tasks

См. такжеRelated Content

См. также:See Also

Безопасность транспорта для зеркального отображения баз данных и групп доступности AlwaysOn (SQL Server) Transport Security for Database Mirroring and Always On Availability Groups (SQL Server)
Конфигурация клиентской сети Client Network Configuration
Предварительные требования, ограничения и рекомендации для групп доступности AlwaysOn (SQL Server)Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server)