Verfügbarkeitsdatenbank anhalten (SQL Server)

Gilt für:SQL Server

Eine Verfügbarkeitsdatenbank können Sie in Always On-Verfügbarkeitsgruppen mithilfe von SQL Server Management Studio, Transact-SQL oder PowerShell in SQL Server anhalten. Beachten Sie, dass der Befehl zum Anhalten auf der Serverinstanz ausgegeben werden muss, die die anzuhaltende oder fortzusetzende Datenbank hostet.

Die Auswirkung eines Anhaltebefehls ist davon abhängig, ob Sie eine sekundäre Datenbank oder eine primäre Datenbank anhalten:

Angehaltene Datenbank Auswirkung des Suspend-Befehls
Sekundäre Datenbank Nur die lokale sekundäre Datenbank wird ausgesetzt, und ihr Synchronisierungsstatus wechselt in den Status NOT SYNCHRONIZING. Andere sekundäre Datenbanken sind nicht betroffen. Die angehaltene Datenbank empfängt keine Daten (Protokolldatensätze) mehr und wendet keine Daten mehr an und beginnt, hinter die primäre Datenbank zu fallen. Vorhandene Verbindungen zum lesbaren sekundären Replikat bleiben weiterhin nutzbar. Neue Verbindungen zur angehaltenen Datenbank auf dem lesbaren Sekundärreplikat sind erst zulässig, wenn die Datenverschiebung wieder aufgenommen wird. Dieses Verhalten gilt nur, wenn Verbindungen mit einem Listener und schreibgeschütztem Routing geöffnet werden.

Die primäre Datenbank bleibt verfügbar. Wenn Sie jede der entsprechenden sekundären Datenbanken anhalten, ist die primäre Datenbank ungeschützt.

** Wichtig ** Während eine sekundäre Datenbank angehalten ist, sammelt die Sendewarteschlange der entsprechenden primären Datenbank nicht gesendete Transaktionsprotokoll-Datensätze. Verbindungen zum sekundären Replikat geben Daten zurück, die zu dem Zeitpunkt verfügbar waren, als die Datenübertragung angehalten wurde.
Primäre Datenbank Die primäre Datenbank stoppt die Datenübertragung an alle verbundenen sekundären Datenbanken. Die primäre Datenbank wird weiterhin in einem ungeschützten Modus ausgeführt. Die primäre Datenbank bleibt für Clients verfügbar, und vorhandene Verbindungen in einer lesbaren sekundären Datenbank bleiben verwendbar, und neue Verbindungen können hergestellt werden.

Hinweis

Das Anhalten einer sekundären Datenbank in Always On wirkt sich nicht direkt auf die Verfügbarkeit der primären Datenbank aus. Das Anhalten einer sekundären Datenbank kann jedoch sich auf Redundanz- und Failoverfunktionen für die primäre Datenbank auswirken. Dies steht im Gegensatz zur Datenbankspiegelung, bei der der Spiegelungsstatus sowohl in der Spiegeldatenbank als auch in der Prinzipaldatenbank angehalten wird. Durch das Anhalten einer primären Always On-Datenbank wird die Datenbewegung auf allen entsprechenden sekundären Datenbanken angehalten, und die Redundanz- und Failoverfunktionen für diese Datenbank stehen nicht mehr zur Verfügung, bis die primäre Datenbank wieder aufgenommen wird.

Bevor Sie beginnen

Beschränkungen und Einschränkungen

Ein SUSPEND-Befehl kehrt zurück, sobald er von dem Replikat akzeptiert wurde, das die Zieldatenbank beherbergt; das tatsächliche Anhalten der Datenbank erfolgt jedoch asynchron.

Voraussetzungen

Sie müssen mit der Serverinstanz verbunden sein, die die Datenbank hostet, die angehalten werden soll. Um eine primäre Datenbank und die entsprechenden sekundären Datenbanken anzuhalten, stellen Sie eine Verbindung mit der Serverinstanz her, die das primäre Replikat hostet. Um eine sekundäre Datenbank anzuhalten und die primäre Datenbank verfügbar zu lassen, stellen Sie eine Verbindung mit dem sekundären Replikat her.

Empfehlungen

Bei Engpässen ist das Anhalten einer oder mehrerer sekundärer Datenbanken möglicherweise kurz nützlich, um die Leistung auf dem primären Replikat vorübergehend zu verbessern. Solange eine sekundäre Datenbank ausgesetzt bleibt, kann das Transaktionsprotokoll der entsprechenden primären Datenbank nicht gekürzt werden. Dies führt dazu, dass sich Protokolldatensätze auf der primären Datenbank ansammeln. Daher wird empfohlen, dass Sie eine angehaltene sekundäre Datenbank schnell fortsetzen oder entfernen. Weitere Informationen finden Sie in diesem Artikel unter Nachverfolgung: Vermeiden eines vollen Transaktionsprotokolls.

Sicherheit

Berechtigungen

Erfordert die ALTER-Berechtigung für die Datenbank.

Erfordert die Berechtigung ALTER AVAILABILITY GROUP für die Verfügbarkeitsgruppe, die CONTROL-Berechtigung AVAILABILITY GROUP, die ALTER ANY-Berechtigung AVAILABILITY GROUP oder die CONTROL SERVER-Berechtigung.

Verwendung von SQL Server Management Studio

Eine Datenbank anhalten

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit der Serverinstanz mit dem Verfügbarkeitsreplikat her, auf der eine Datenbank angehalten werden soll, und erweitern Sie die Serverstruktur. Weitere Informationen finden Sie weiter oben in diesem Thema unter Voraussetzungen.

  2. Erweitern Sie den Knoten Hohe Verfügbarkeit (immer aktiviert) und den Knoten Verfügbarkeitsgruppen .

  3. Erweitern Sie die Verfügbarkeitsgruppe.

  4. Erweitern Sie den Knoten Verfügbarkeitsdatenbanken, klicken Sie mit der rechten Maustaste auf die Datenbank, und klicken Sie auf Datenbewegung anhalten.

  5. Klicken Sie im Dialogfeld Datenverschiebung anhalten auf OK.

    Der Objekt-Explorer zeigt an, dass die Datenbank ausgesetzt ist, indem das Datenbanksymbol mit einem Pausensymbol versehen wird.

Hinweis

Wiederholen Sie zum Anhalten weiterer Datenbanken in diesem Replikatspeicherort Schritt 4 und 5 für jede Datenbank.

Verwenden von Transact-SQL

Eine Datenbank anhalten

  1. Stellen Sie eine Verbindung mit der Serverinstanz her, die das Replikat hostet, dessen Datenbank Sie anhalten möchten. Weitere Informationen finden Sie weiter oben in diesem Thema unter Voraussetzungen.

  2. Anhalten der Datenbank mithilfe der folgenden ALTER DATABASE Anweisung:

    ALTER DATABASE database_nameSET HADR SUSPEND;

Verwenden von PowerShell

Eine Datenbank aussetzen

  1. Wechseln Sie mit cd in das Verzeichnis der Serverinstanz, die das Replikat beherbergt, dessen Datenbank Sie aussetzen möchten. Weitere Informationen finden Sie weiter oben in diesem Thema unter Voraussetzungen.

  2. Verwenden Sie das Cmdlet Suspend-SqlAvailabilityDatabase, um die Verfügbarkeitsgruppe anzuhalten.

    Beispielsweise setzt der folgende Befehl die Datensynchronisierung für die Verfügbarkeitsdatenbank MyDb3 in der Verfügbarkeitsgruppe MyAg auf der Serverinstanz mit dem Namen Computer\Instance aus.

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

    Hinweis

    Um die Syntax eines Cmdlets anzuzeigen, verwenden Sie das Get-Help -Cmdlet in der SQL Server PowerShell-Umgebung. Weitere Informationen finden Sie unter Get Help SQL Server PowerShell.

Einrichten und Verwenden des SQL Server PowerShell-Anbieters

Nachverfolgung: Vermeiden eines vollen Transaktionsprotokolls

Wenn ein automatischer Prüfpunkt für eine Datenbank ausgeführt wird, wird normalerweise das zugehörige Transaktionsprotokoll nach der nächsten Protokollsicherung auf diesen Prüfpunkt gekürzt. Wenn jedoch eine sekundäre Datenbank angehalten wird, bleiben alle aktuellen Protokolldatensätze auf der primären Datenbank aktiv. Wenn das Transaktionsprotokoll voll ist (weil die maximale Größe erreicht wurde oder weil für die Serverinstanz der Speicherplatz nicht ausreicht), kann die Datenbank keine Updates mehr ausführen.

Führen Sie eine der folgenden Aktionen aus, um dieses Problem zu umgehen:

So beheben Sie die Fehler eines vollständigen Transaktionsprotokolls

Verwandte Aufgaben

Siehe auch

Übersicht über Always On-Verfügbarkeitsgruppen (SQL Server)
Fortsetzen einer Verfügbarkeitsdatenbank (SQL Server)