ALTER DATABASE SET HADR (Transact-SQL)
Dieses Thema enthält die ALTER DATABASE-Syntax zum Festlegen von AlwaysOn-Verfügbarkeitsgruppen-Optionen für eine sekundäre Datenbank. es ist nur eine SET HADR-Option pro ALTER DATABASE-Anweisung erlaubt. Diese Optionen werden nur auf sekundären Replikaten unterstützt.
Gilt für: SQL Server (SQL Server 2012 bis aktuelle Version). |
Transact-SQL-Syntaxkonventionen
Syntax
ALTER DATABASE database_name
SET HADR
{
{ AVAILABILITY GROUP = group_name | OFF }
| { SUSPEND | RESUME }
}
[;]
Argumente
database_name
Der Name der sekundären Datenbank, die geändert werden soll.SET HADR
Führt den angegebenen Befehl AlwaysOn-Verfügbarkeitsgruppen-Befehl in der angegebenen Datenbank aus.{ AVAILABILITY GROUP **=**group_name | OFF }
Verknüpft die Verfügbarkeitsdatenbank mit der angegebenen Verfügbarkeitsgruppe oder entfernt sie hieraus.group_name
Verknüpft die angegebene Datenbank auf dem sekundären Replikat, das von der Serverinstanz gehostet wird, auf der Sie den Befehl ausführen, mit der durch group_name angegebenen Verfügbarkeitsgruppe.Für diesen Vorgang müssen folgende Voraussetzungen gegeben sein:
Die Datenbank muss der Verfügbarkeitsgruppe auf dem primären Replikat bereits hinzugefügt worden sein.
Das primäre Replikat muss aktiv sein. Informationen zur Problembehandlung für ein inaktives primäres Replikat finden Sie unter Problembehandlung für die AlwaysOn-Verfügbarkeitsgruppenkonfiguration (SQL Server).
Das primäre Replikat muss online sein, und das sekundäre Replikat muss mit dem primären Replikat verbunden sein.
Die sekundäre Datenbank muss mit WITH NORECOVERY aus einer aktuellen Datenbank und Protokollsicherungen der primären Datenbank wiederhergestellt werden und mit einer Protokollsicherung enden, die so aktuell ist, dass die sekundäre Datenbank den gleichen Stand hat wie die primäre Datenbank.
Hinweis
Um der Verfügbarkeitsgruppe eine Datenbank hinzuzufügen, stellen Sie eine Verbindung mit der Serverinstanz her, die das primäre Replikat hostet, und verwenden Sie dann die Anweisung ALTER AVAILABILITY GROUP group_name ADD DATABASE database_name.
Weitere Informationen finden Sie unter Verknüpfen einer sekundären Datenbank mit einer Verfügbarkeitsgruppe (SQL Server).
OFF
Entfernt die angegebene sekundäre Datenbank aus der Verfügbarkeitsgruppe.Das Entfernen einer sekundären Datenbank ist sinnvoll, wenn diese gegenüber der primären Datenbank stark veraltet ist und Sie nicht warten möchten, bis die sekundäre Datenbank wieder auf dem Stand der primären Datenbank ist. Sie können die sekundäre Datenbank auch nach dem Entfernen aktualisieren, indem Sie eine Sequenz von Sicherungen wiederherstellen, die mit einer aktuellen Protokollsicherung enden (mittels RESTORE … WITH NORECOVERY).
Wichtig
Um eine Verfügbarkeitsdatenbank vollständig aus einer Verfügbarkeitsgruppe zu entfernen, stellen Sie eine Verbindung mit der Serverinstanz her, die das primäre Replikat hostet, und verwenden Sie die Anweisung ALTER AVAILABILITY GROUP group_name REMOVE DATABASE availability_database_name.Weitere Informationen finden Sie unter Entfernen einer primären Datenbank aus einer Verfügbarkeitsgruppe (SQL Server).
SUSPEND
Hält das Verschieben von Daten in einer sekundären Datenbank an. Ein SUSPEND-Befehl gibt einen Wert zurück, sobald es vom Replikat akzeptiert wurde, das die Zieldatenbank hostet. Das Anhalten der Datenbank ist jedoch dadurch asynchron.Der Umfang der Auswirkungen hängt davon ab, wo Sie die ALTER DATABASE-Anweisung ausführen:
Wenn Sie eine sekundäre Datenbank auf einem sekundären Replikat anhalten, wird nur die lokale sekundäre Datenbank angehalten. Vorhandene Verbindungen mit dem lesbaren sekundären Replikat können weiter verwendet werden. Neue Verbindungen mit der angehaltenen Datenbank auf dem lesbaren sekundären Replikat werden erst zugelassen, wenn Datenverschiebung fortgesetzt wird.
Wenn Sie eine Datenbank auf dem primären Replikat anhalten, wird die Datenverschiebung in die entsprechenden sekundären Datenbanken auf jedem sekundären Replikat angehalten. Vorhandene Verbindungen mit einem lesbaren sekundären Replikat können weiter verwendet werden, und neue Verbindungen können hergestellt werden.
Wenn die Datenverschiebung aufgrund eines erzwungenen manuellen Failovers angehalten wird, werden Verbindungen mit dem neuen sekundären Replikat nicht zugelassen, solange die Datenverschiebung angehalten ist.
Wenn eine Datenbank auf einem sekundären Replikat angehalten ist, werden die Datenbank und das Replikat nicht mehr synchronisiert und als NOT SYNCHRONIZED markiert.
Wichtig
Während eine sekundäre Datenbank angehalten ist, sammelt die Sendewarteschlange der entsprechenden primären Datenbank nicht gesendete Transaktionsprotokoll-Datensätze.Verbindungen mit dem sekundären Replikat geben Daten zurück, die verfügbar waren, als die Datenverschiebung angehalten wurde.
Hinweis
Das Anhalten und Fortsetzen einer sekundären AlwaysOn-Datenbank wirkt sich nicht direkt auf die Verfügbarkeit der primären Datenbank aus, das Anhalten einer sekundären Datenbank kann sich jedoch auf Redundanz- und Failoverfunktionen für die primäre Datenbank auswirken, bis die angehaltene sekundären Datenbank fortgesetzt wird.Dies steht im Gegensatz zur Datenbankspiegelung, bei der der Spiegelungsstatus sowohl in der Spiegeldatenbank als auch in der Prinzipaldatenbank angehalten wird, bis die Spiegelung fortgesetzt wird.Durch Anhalten einer primären AlwaysOn-Datenbank wird die Datenverschiebung auf allen entsprechenden sekundären Datenbanken angehalten, und Redundanz- und Failoverfunktionen für diese Datenbank werden deaktiviert, bis die primäre Datenbank fortgesetzt wird.
Weitere Informationen finden Sie unter Anhalten einer Verfügbarkeitsdatenbank (SQL Server).
RESUME
Nimmt eine angehaltene Datenverschiebung in die angegebene sekundäre Datenbank wieder auf. Ein RESUME-Befehl gibt einen Wert zurück, sobald es vom Replikat akzeptiert wurde, das die Zieldatenbank hostet. Das Fortsetzen der Datenbank ist jedoch dadurch asynchron.Der Umfang der Auswirkungen hängt davon ab, wo Sie die ALTER DATABASE-Anweisung ausführen:
Wenn Sie eine sekundäre Datenbank auf einem sekundären Replikat wieder aufnehmen, wird nur die lokale sekundäre Datenbank wieder aufgenommen. Die Datenverschiebung wird fortgesetzt, außer die Datenbank wurde auch auf dem primären Replikat angehalten.
Wenn Sie eine Datenbank auf dem primären Replikat wieder aufnehmen, wird Datenverschiebung auf alle sekundären Replikate fortgesetzt, auf denen die entsprechende sekundäre Datenbank nicht ebenfalls lokal angehalten wurde. Um eine sekundäre Datenbank fortzusetzen, die einzeln auf einem sekundären Replikat angehalten wurde, stellen Sie eine Verbindung mit der Serverinstanz her, die das sekundäre Replikat hostet, und setzen Sie die Datenbank dort fort.
Im Modus für synchrone Commits ändert sich der Datenbankstatus in SYNCHRONIZING. Wenn zurzeit keine andere Datenbank angehalten ist, ändert sich der Replikatstatus ebenfalls in SYNCHRONIZING.
Weitere Informationen finden Sie unter Fortsetzen einer Verfügbarkeitsdatenbank (SQL Server).
Datenbankstatus
Wenn eine sekundäre Datenbank mit einer Verfügbarkeitsgruppe verbunden wird, ändert das lokale sekundäre Replikat den Status dieser sekundären Datenbank von RESTORING in ONLINE. Wenn eine sekundäre Datenbank aus der Verfügbarkeitsgruppe entfernt wird, wird sie vom lokalen sekundären Replikat auf den Status RESTORING zurückgesetzt. Dies ermöglicht Ihnen, nachfolgende Protokollsicherungen aus der primären Datenbank auf diese sekundäre Datenbank anzuwenden.
Einschränkungen
Führen Sie ALTER DATABASE-Anweisungen außerhalb von Transaktionen und Batches aus.
Sicherheit
Berechtigungen
Erfordert die ALTER-Berechtigung für die Datenbank. Das Verknüpfen einer Datenbank mit einer Verfügbarkeitsgruppe erfordert die Mitgliedschaft in der festen Datenbankrolle db_owner.
Beispiele
Im folgenden Beispiel wird die sekundäre Datenbank AccountsDb1 mit dem lokalen sekundären Replikat der AccountsAG-Verfügbarkeitsgruppe verknüpft.
ALTER DATABASE AccountsDb1 SET HADR AVAILABILITY GROUP = AccountsAG;
Hinweis
Unter Erstellen einer Verfügbarkeitsgruppe (Transact-SQL) können Sie diese Transact-SQL-Anweisung im Kontext sehen.
Siehe auch
Verweis
ALTER AVAILABILITY GROUP (Transact-SQL)
CREATE AVAILABILITY GROUP (Transact-SQL)
Konzepte
Übersicht über AlwaysOn-Verfügbarkeitsgruppen (SQL Server)
Problembehandlung für die AlwaysOn-Verfügbarkeitsgruppenkonfiguration (SQL Server)