Реплика доступности не соединена с группой доступности Always On
Применимо к:SQL Server
Введение
- Имя политики Состояние соединения реплики доступности
- Проблема Реплика доступности отключена.
- КатегорияКритически важное
- Аспект Реплика доступности
Описание
Эта политика проверяет состояние соединения между репликами доступности. Эта политика находится в нерабочем состоянии, если подключение к реплике доступности имеет состояние DISCONNECTED. В остальном политика находится в рабочем состоянии.
Возможные причины
Вторичная реплика не подключена к первичной реплике. Состояние соединения — DISCONNECTED. Возможны следующие причины этой проблемы.
Порт подключения может конфликтовать с другим приложением.
Несоответствие типа или алгоритма шифрования.
Конечная точка подключения была удалена или не была запущена.
В брандмауэре блокируются проблемы с сетью, подключением или портами.
Учетная запись службы или запуска не является пользователем домена и не может подключиться к контроллеру домена, к удаленному узлу и порту (например, 5022)
Возможные решения
Проверьте конфигурацию конечной точки зеркального отображения базы данных для экземпляров первичной и вторичной реплики и обновите конфигурацию с несоответствием. Кроме того, проверьте наличие конфликта портов и при его обнаружении измените номер порта.
Ниже перечислены возможные решения этой проблемы:
Порт подключения может конфликтовать с другим приложением.
Выполните следующие команды для диагностики проблемы с портом:
$server_name = "server_instance" #replace with your SQL Server instance Sqlcmd -S $server_name -E -Q "SELECT type_desc, port FROM sys.tcp_endpoints WHERE type_desc = 'DATABASE_MIRRORING'; "
Приведенная выше команда вернет номер порта, который необходимо использовать в приведенной ниже команде.
$port = "5022" Get-NetTCPConnection -LocalPort $port Get-Process -Id (Get-NetTCPConnection -LocalPort $port).OwningProcess |Select-Object Name, ProductVersion, Path, Id
Несоответствие типа или алгоритма шифрования.
Выполните алгоритм на обоих серверах, сравните шифрование и убедитесь, что оба варианта одинаковы:
$server_name = "server_instance" #replace with your SQL Server instance sqlcmd -S $server_name -E -Q "SELECT name, state_desc, encryption_algorithm_desc, protocol_desc, type_desc FROM sys.database_mirroring_endpoints"
Конечная точка подключения была удалена или не была запущена.
Выполните следующую команду, если конечная точка зеркального отображения завершает работу и запускается.
$server_name = "server_instance" #replace with your SQL Server instance Sqlcmd -S $server_name -E -Q "SELECT name, state_desc, encryption_algorithm_desc, protocol_desc, type_desc FROM sys.database_mirroring_endpoints"
Выполните приведенную ниже команду, если вы подозреваете, что конечная точка не отвечает на попытки подключения или не запущена.
$server_name = "server_instance" #use your SQL Server instance here $server_name = "hadr_endpoint" #replace with your endpoint name Sqlcmd -S $server_name -E -Q "ALTER ENDPOINT hadr_endpoint STATE = stopped" Sqlcmd -S $server_name -E -Q "ALTER ENDPOINT hadr_endpoint STATE = started"
Предупреждение
Выполнение команды с
STATE = stopped
останавливает работу конечной точки и временно прерывает поток трафика Always On.В брандмауэре блокируются проблемы с сетью, подключением или портами
Используйте следующие команды, чтобы проверить подключение в обоих направлениях от Node1 к Node2 и от Node2 к Node1:
$computer = $env:computername $port = "5022" # replace with the port from your database_mirroring_endpoints. Test-NetConnection -ComputerName $computer -Port $port
Учетная запись службы или запуска не является пользователем домена и не может подключиться к контроллеру домена, к удаленному узлу и порту (например, 5022)
Чтобы проверить, может ли учетная запись службы подключиться к удаленному узлу, выполните следующие действия. Эти действия предполагают, что вы не выполняли вход в систему с помощью учетной записи службы:
Нажмите кнопку Пуск>Windows PowerShell> и щелкните правой кнопкой мыши значок.
Выберите Больше>Запуск от имени другого пользователя>Использовать другую учетную запись.
Введите имя учетной записи службы и пароль.
После открытия Windows PowerShell введите следующую команду, чтобы убедиться, что вы выполнили вход с помощью учетной записи службы:
whoami
Затем можно проверить подключение к удаленному узлу. Пример:
$computer = "remote_node" # Replace with Naode name as per your environment. $port = "5022" # Replace with the port from your database_mirroring_endpoints. Test-NetConnection -ComputerName $computer -Port 5022
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по