Delen via


De beschikbaarheidsreplica is ontkoppeld AlwaysOn-beschikbaarheidsgroep

Van toepassing op: SQL Server

Introductie

  • Beleidsnaam: Verbindingsstatus van beschikbaarheidsreplica
  • Probleem: de verbinding met beschikbaarheidsreplica is verbroken
  • Categorie: Kritiek
  • Facet: Beschikbaarheidsreplica

Beschrijving

Dit beleid controleert de verbindingsstatus tussen beschikbaarheidsreplica's. Het beleid heeft een slechte status wanneer de verbindingsstatus van de beschikbaarheidsreplica zich bevindt DISCONNECTED. Het beleid heeft anders een goede status.

Mogelijke oorzaken

De secundaire replica is niet verbonden met de primaire replica. De verbonden status is DISCONNECTED. Dit probleem kan worden veroorzaakt om een van de volgende redenen:

Mogelijke oplossingen

Controleer de configuratie van het eindpunt voor databasespiegeling voor de exemplaren van de primaire en secundaire replica en werk de niet-overeenkomende configuratie bij. Controleer ook of de poort conflicteert en zo ja, wijzig het poortnummer.

Hier volgen mogelijke oplossingen voor dit probleem:

De verbindingspoort kan conflicteren met een andere toepassing

Voer de volgende opdrachten uit om poortproblemen vast te stellen:

$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'; "

Met de vorige opdracht wordt het poortnummer geretourneerd dat u in de volgende opdracht moet gebruiken.

$port = "5022"
Get-NetTCPConnection -LocalPort $port
Get-Process -Id (Get-NetTCPConnection -LocalPort $port).OwningProcess | Select-Object Name, ProductVersion, Path, Id

Het versleutelingstype of algoritme komt niet overeen

Voer deze opdracht uit op beide servers en vergelijk de versleuteling en zorg ervoor dat beide hetzelfde zijn.

$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"

Het verbindingseindpunt is verwijderd of niet gestart

Voer de volgende opdracht uit als het eindpunt voor spiegeling wordt afgesloten en wordt gestart.

$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"

Voer de volgende opdracht uit als u vermoedt dat het eindpunt niet reageert op verbindingen of niet wordt uitgevoerd.

$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"

Waarschuwing

Als u de opdracht uitvoert, STATE = stopped wordt uw eindpunt gestopt en wordt de AlwaysOn-verkeersstroom tijdelijk onderbroken.

Problemen met het netwerk of de verbinding, of poorten worden geblokkeerd bij de firewall

Gebruik de volgende opdrachten om de connectiviteit in beide richtingen van Node1 en naarNode1:Node2Node2

$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

Account is geen domeingebruiker en kan geen verbinding maken met de domeincontroller en met het externe knooppunt

Volg deze stappen om te testen of het serviceaccount verbinding kan maken met het externe knooppunt. Bij de stappen wordt ervan uitgegaan dat u niet bent aangemeld met het serviceaccount.

  1. Selecteer Start>Windows PowerShell> met de rechtermuisknop op het pictogram.

  2. Selecteer Meer>uitvoeren als verschillende gebruiker>Een ander account gebruiken.

  3. Typ de naam en het wachtwoord van het serviceaccount.

  4. Nadat Windows PowerShell is geopend, typt u de volgende opdracht om te controleren of u bent aangemeld met het serviceaccount:

    whoami
    
  5. Vervolgens kunt u de verbinding met het externe knooppunt testen, zoals in het volgende voorbeeld.

    $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