Dela via


Pausa en tillgänglighetsdatabas (SQL Server)

gäller för:SQL Server

Du kan pausa en tillgänglighetsdatabas i AlwaysOn-tillgänglighetsgrupper med hjälp av SQL Server Management Studio, Transact-SQL eller PowerShell i SQL Server. Observera att ett pauskommando måste utfärdas på den serverinstans som är värd för databasen för att pausas eller återupptas.

Effekten av ett pauskommando beror på om du pausar en sekundär databas eller en primär databas enligt följande:

Suspenderad databas Effekten av pauskommando
Sekundär databas Endast den lokala sekundära databasen pausas och dess synkroniseringstillstånd blir EJ SYNKRONISERAD. Andra sekundära databaser påverkas inte. Den pausade databasen slutar att ta emot och tillämpa data (loggposter) och börjar hamna bakom den primära databasen. Befintliga anslutningar på den läsbara sekundära förblir användbara. Nya anslutningar till den inaktiverade databasen på den läsbara sekundära filen tillåts inte förrän dataflytten återupptas. Det här beteendet gäller endast när anslutningar öppnas med lyssnare och skrivskyddad routning.

Den primära databasen är fortfarande tillgänglig. Om du pausar varje motsvarande sekundär databas, körs den primära databasen sårbar.

** Viktigt ** När en sekundär databas stoppas, kommer skickakön för den motsvarande primära databasen att ackumulera osända transaktionsloggposter. Anslutningar till den sekundära repliken returnerar data som var tillgängliga när dataflytten avbröts.
Primär databas Den primära databasen stoppar dataflytten till varje ansluten sekundär databas. Den primära databasen fortsätter att köras i ett exponerat läge. Den primära databasen är fortfarande tillgänglig för klienter och befintliga anslutningar på en läsbar sekundär förblir användbara och nya anslutningar kan göras.

Notera

Om du inaktiverar en alwayson-sekundär databas påverkas inte tillgängligheten för den primära databasen direkt. Om du inaktiverar en sekundär databas kan det dock påverka redundans- och failoverfunktionerna för den primära databasen. Detta står i kontrast till databasspegling, där speglingstillståndet pausas på både speglingsdatabasen och huvuddatabasen. Om du pausar en Always On-primärdatabas pausas dataflytten på alla motsvarande sekundära databaser, och redundans- och failover-funktioner upphör för den databasen tills den primära databasen återupptas.

Innan du börjar

Begränsningar och inskränkningar

Ett SUSPEND-kommando returneras så snart det har godkänts av repliken som är värd för måldatabasen, men att pausa databasen sker asynkront.

Förutsättningar

Du måste vara ansluten till den serverinstans som är värd för den databas som du vill pausa. Om du vill pausa en primär databas och motsvarande sekundära databaser ansluter du till den serverinstans som är värd för den primära repliken. Om du vill pausa en sekundär databas och lämna den primära databasen tillgänglig ansluter du till den sekundära repliken.

Rekommendationer

Under flaskhalsar kan det vara praktiskt att tillfälligt pausa en eller flera sekundära databaser för att förbättra prestanda för den primära repliken. Så länge en sekundär databas förblir satt på paus kan inte transaktionsloggen för motsvarande primära databas trunkeras. Detta gör att loggposter ackumuleras på den primära databasen. Därför rekommenderar vi att du snabbt återupptar eller tar bort en inaktiverad sekundär databas. För mer information, se Uppföljning: Undvika en fullständig transaktionslogg, senare i detta ämne.

Säkerhet

Behörigheter

Kräver ALTER-behörighet för databasen.

Kräver behörighet för att ÄNDRA TILLGÄNGLIGHETSGRUPP på tillgänglighetsgruppen, KONTROLLERA TILLGÄNGLIGHETSGRUPP-behörighet, ändra valfri tillgänglighetsgrupp-behörighet, eller KONTROLLERA SERVRAR-behörighet.

Använda SQL Server Management Studio

Så här inaktiverar du en databas

  1. I Object Explorer ansluter du till den serverinstans som är värd för tillgänglighetsrepliken där du vill pausa en databas och expanderar serverträdet. Mer information finns i Krav, tidigare i det här avsnittet.

  2. Expandera noden Always On High Availability och noden Availability Groups.

  3. Expandera tillgänglighetsgruppen.

  4. Expandera noden Tillgänglighetsdatabaser, högerklicka på den aktuella databasen och klicka på Pausa dataflytt.

  5. I dialogrutan Pausa dataflytt klickar du på OK.

    Object Explorer anger att databasen pausas genom att ändra databasikonen så att en pausindikator visas.

Not

Om du vill pausa ytterligare databaser på den här replikplatsen upprepar du steg 4 och 5 för varje databas.

Använda Transact-SQL

Så här inaktiverar du en databas

  1. Anslut till den serverinstans som är värd för repliken vars databas du vill pausa. Mer information finns i Krav, tidigare i det här avsnittet.

  2. Pausa databasen med hjälp av följande ALTER DATABASE--instruktion:

    ALTER DATABASE database_name SET HADR SUSPEND;

Använda PowerShell

Så här inaktiverar du en databas

  1. Ändra katalog (cd) till den serverinstans som är värd för repliken vars databas du vill pausa. Mer information finns i Krav, tidigare i det här avsnittet.

  2. Använd cmdleten Suspend-SqlAvailabilityDatabase för att pausa tillgänglighetsgruppen.

    Följande kommando pausar till exempel datasynkronisering för tillgänglighetsdatabasen MyDb3 i tillgänglighetsgruppen MyAg på serverinstansen med namnet Computer\Instance.

    Suspend-SqlAvailabilityDatabase `   
    -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb3  
    

    Anteckning

    Om du vill visa syntaxen för en cmdlet använder du cmdleten Get-Help i SQL Server PowerShell-miljön. Mer information finns i Hämta hjälp för SQL Server PowerShell.

Konfigurera och använda SQL Server PowerShell-providern

Uppföljning: Undvika en fullständig transaktionslogg

Normalt, när en automatisk kontrollpunkt utförs på en databas, trunkeras dess transaktionslogg till den kontrollpunkten efter nästa loggsäkerhetskopia. Men medan en sekundär databas pausas förblir alla aktuella loggposter aktiva i den primära databasen. Om transaktionsloggen fylls (antingen för att den når sin maximala storlek eller om serverinstansen får slut på utrymme) kan databasen inte utföra fler uppdateringar.

För att undvika det här problemet bör du göra något av följande:

Felsöka en fullständig transaktionslogg

Relaterade uppgifter

Se även

översikt över AlwaysOn-tillgänglighetsgrupper (SQL Server)
Återuppta en tillgänglighetsdatabas (SQL Server)