Реплика доступности не соединена с группой доступности Always On
Область применения: SQL Server
Введение
- Имя политики Состояние соединения реплики доступности
- Проблема: реплика доступности отключена
- Категория Критически важное
- Аспект Реплика доступности
Description
Эта политика проверяет состояние соединения между репликами доступности. Политика находится в неработоспособном состоянии, когда состояние подключения реплики 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.
Проблемы с сетью или подключением или порты заблокированы в брандмауэре
Используйте следующие команды, чтобы проверить подключение в обоих направлениях от и Node2
Node1
до Node1
Node2
:
$computer = "remote_node" # replace with node name in your environment
$port = "5022" # replace with the port from your database_mirroring_endpoints
Test-NetConnection -ComputerName $computer -Port $port
Учетная запись не является пользователем домена и не может подключиться к контроллеру домена, а также к удаленному узлу
Чтобы проверить, может ли учетная запись службы подключиться к удаленному узлу, выполните следующие действия. В шагах предполагается, что вы не вошли в систему с помощью учетной записи службы.
Нажмите кнопку Пуск>Windows PowerShell> и щелкните правой кнопкой мыши значок.
Выберите Больше>Запуск от имени другого пользователя>Использовать другую учетную запись.
Введите имя учетной записи службы и пароль.
После открытия Windows PowerShell введите следующую команду, чтобы убедиться, что вы выполнили вход с помощью учетной записи службы:
whoami
Затем можно проверить подключение к удаленному узлу, как показано в следующем примере.
$computer = "remote_node" # replace with node name in your environment $port = "5022" # replace with the port from your database_mirroring_endpoints Test-NetConnection -ComputerName $computer -Port $port