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


Поиск и устранение неисправностей конфигурации групп доступности AlwaysOn (SQL Server)

В этом разделе содержатся сведения, которые помогут устранить типичные проблемы с настройкой экземпляров сервера для групп доступности Always On. Типичные проблемы конфигурации: Always On группы доступности отключены, учетные записи настроены неправильно, конечная точка зеркального отображения базы данных не существует, конечная точка недоступна (SQL Server ошибка 1418), сетевой доступ не существует, а команда присоединения базы данных завершается ошибкой (SQL Server ошибка 35250).

Примечание

Убедитесь, что выполнены предварительные требования Always On групп доступности. Дополнительные сведения см. в разделе Предварительные требования, ограничения и рекомендации для групп доступности AlwaysOn (SQL Server).

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

Section Описание
Функция групп доступности AlwaysOn не включена Если экземпляр SQL Server не включен для Always On групп доступности, экземпляр не поддерживает создание группы доступности и не может размещать реплики доступности.
Измерение счетов Обсуждаются требования к правильной настройке учетных записей, под которыми работает SQL Server .
Конечные точки Описывается диагностика проблем конечной точки зеркального отображения баз данных для экземпляра сервера.
Имя системы Обобщаются альтернативы указанию системного имени экземпляра сервера в URL-адресе конечной точки.
Сетевой доступ Документирует требование к каждому экземпляру сервера, на котором размещается реплика доступности, чтобы каждый такой экземпляр имел доступ к порту каждого другого экземпляра сервера по протоколу TCP.
Доступ к конечной точке (ошибка SQL Server 1418) Содержит сведения об этом сообщении об ошибке SQL Server .
Ошибка присоединения базы данных (ошибка SQL Server 35250) Обсуждаются возможные причины и способы устранения проблемы с присоединением баз данных-получателей к группе доступности, поскольку соединение с первичной репликой неактивно.
Маршрутизация только для чтения работает неправильно
Связанные задачи Содержит список разделов, ориентированных на задачи в электронной документации SQL Server 2014 г., которые особенно актуальны для устранения неполадок в конфигурации группы доступности.
См. также Содержит список важных ресурсов, не входящих в состав электронной документации по SQL Server .

Функция групп доступности AlwaysOn не включена

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

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

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

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

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

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

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

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

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

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

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

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

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

Имя системы

В качестве системного имени экземпляра сервера в URL-адресе конечной точки можно использовать любое имя, которое однозначно идентифицирует систему. Адрес сервера может представлять собой системное имя (если системы находятся в одном), полное доменное имя или IP-адрес (желательно статический). Полное доменное имя будет работать гарантированно. Дополнительные сведения см. в разделе Выбор URL-адреса конечной точки при добавлении или изменении реплики доступности (SQL Server).

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

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

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

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

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

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

Решение.

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

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

Маршрутизация только для чтения работает неправильно

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

Если... Действие Комментарии Ссылка
Флажок Текущая первичная реплика Убедитесь, что прослушиватель группы доступности находится в режиме «в сети». Чтобы убедиться, что прослушиватель имеет состояние «в сети», выполните следующие действия.

SELECT * FROM sys.dm_tcp_listener_states;

Перезапуск прослушивателя с состоянием «вне сети»

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

ALTER AVAILABILITY GROUP (Transact-SQL)
Флажок Текущая первичная реплика Убедитесь, что параметр READ_ONLY_ROUTING_LIST содержит только экземпляры сервера, где размещена вторичная реплика. Чтобы определить доступные для чтения вторичные реплики: sys.availability_replicas (столбец secondary_role_allow_connections_desc )

Просмотр списка маршрутизации только для чтения: sys.availability_read_only_routing_lists

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

sys.availability_read_only_routing_lists (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)
Флажок Каждая реплика в списке read_only_routing_list Убедитесь, что брандмауэр Windows не блокирует порт READ_ONLY_ROUTING_URL. - Настройка брандмауэра Windows для доступа к компоненту Database Engine
Флажок Каждая реплика в списке read_only_routing_list В диспетчер конфигурации SQL Server убедитесь, что:

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

TCP/IP включен.

IP-адреса настроены правильно.
- Просмотр или изменение свойств сервера (SQL Server)

Настройка сервера для прослушивания указанного TCP-порта (диспетчер конфигурации SQL Server)
Флажок Каждая реплика в списке read_only_routing_list Убедитесь, что READ_ONLY_ROUTING_URL (TCP://system-address:port) содержит правильное полное доменное имя (FQDN) и номер порта. - Вычисление для AlwaysOn

sys.availability_replicas (Transact-SQL)

ALTER AVAILABILITY GROUP (Transact-SQL)
Флажок Система клиента Убедитесь, что драйвер клиента поддерживает маршрутизацию только для чтения. - Подключение клиента AlwaysOn (SQL Server)

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

См. также

См. также:

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