Transact-SQL-Einstellungen und Datenbankspiegelungs-Betriebsmodi
In diesem Thema wird der Vorgang einer Datenbankspiegelungssitzung im Hinblick auf ALTER DATABASE-Einstellungen und gespiegelte Datenbankzustände mit einem Zeugen erläutert. Das Thema wendet sich an Benutzer, die Datenbankspiegelungen hauptsächlich oder ausschließlich mithilfe von Transact-SQL anstelle von Microsoft SQL Server Management Studio verwalten. Wenn Sie sich mit Betriebsmodi nicht auskennen, finden Sie Informationen unter Datenbank-Spiegelungssitzungen.
Hinweis |
---|
Als Alternative zu Transact-SQL können Sie den Betriebsmodus einer Sitzung im Objekt-Explorer mithilfe der Seite Spiegelung des Dialogfelds Datenbankeigenschaften steuern. Weitere Informationen finden Sie unter Vorgehensweise: Konfigurieren einer Datenbank-Spiegelungssitzung (SQL Server Management Studio). |
Auswirkungen der Transaktionssicherheit und des Zeugenstatus auf den Betriebsmodus
Der Betriebsmodus einer Sitzung wird durch die Kombination ihrer Transaktionssicherheitseinstellungen und dem Status des Zeugen bestimmt. Der Datenbankbesitzer kann jederzeit die Transaktionssicherheitsstufe ändern und den Zeugen hinzufügen oder entfernen.
Transaktionssicherheit
Bei der Transaktionssicherheit handelt es sich um eine spiegelungsspezifische Datenbankeigenschaft, die bestimmt, ob eine Datenbank-Spiegelungssitzung synchron oder asynchron betrieben wird. Es gibt zwei Sicherheitsstufen: FULL und OFF.
SAFETY FULL
Durch die vollständige Transaktionssicherheit wird die Sitzung synchron im Modus mit hoher Leistung ausgeführt. Wenn ein Zeuge vorhanden ist, unterstützt die Sitzung ein automatisches Failover.
Wenn Sie mithilfe von ALTER DATABASE-Anweisungen eine Sitzung einrichten, wird die Sitzung mit der SAFETY-Einstellung FULL begonnen. Die Sitzung startet also im Modus mit hoher Sicherheit. Nachdem die Sitzung begonnen hat, können Sie einen Zeugen hinzufügen.
Weitere Informationen finden Sie unter Synchrone Datenbankspiegelung (Modus für hohe Sicherheit).
SAFETY OFF
Durch das Deaktivieren der Transaktionssicherheit wird die Sitzung asynchron im Modus mit hoher Leistung betrieben. Wenn die SAFETY-Eigenschaft auf OFF festgelegt ist, sollte die WITNESS-Eigenschaft ebenfalls auf OFF festgelegt werden (Standardeinstellung). Informationen zur Auswirkung der Zeugenoption im Modus für hohe Leistung finden Sie im Abschnitt "Der Zeugenstatus" weiter unten in diesem Thema. Weitere Informationen zum Betrieb mit deaktivierter Transaktionssicherheit finden Sie unter Asynchrone Datenbankspiegelung (Modus für hohe Leistung).
Die Transaktionssicherheitseinstellung der Datenbank wird auf jedem Partner in der sys.database_mirroring-Katalogsicht in den Spalten mirroring_safety_level und mirroring_safety_level_desc aufgezeichnet. Weitere Informationen finden Sie unter sys.database_mirroring (Transact-SQL).
Der Datenbankbesitzer kann die Transaktionssicherheitsstufe jederzeit ändern.
Der Zeugenstatus
Wenn ein Zeuge festgelegt wurde, ist ein Quorum erforderlich, sodass der Zeugenstatus stets wichtig ist.
Falls er vorhanden ist, weist der Zeuge einen von zwei Status auf:
Wenn der Zeuge über eine Verbindung zu einem Partner verfügt, ist der Zeuge relativ zu diesem Partner im Status CONNECTED und verfügt über ein Quorum mit diesem Partner. In diesem Fall kann die Datenbank verfügbar gemacht werden, auch wenn einer der Partner nicht verfügbar ist.
Wenn der Zeuge vorhanden ist, aber über keine Verbindung zu einem Partner verfügt, ist der Zeuge relativ zu diesem Partner im Status UNKOWN oder DISCONNECTED. In diesem Fall verfügt der Zeuge über kein Quorum in Bezug auf diesen Partner, und wenn die Partner nicht miteinander verbunden sind, ist die Datenbank nicht mehr verfügbar.
Weitere Informationen zum Quorum finden Sie unter Quorum: Auswirkungen eines Zeugen auf die Datenbankverfügbarkeit.
Der Status jedes Zeugen auf einer Serverinstanz wird in der sys.database_mirroring-Katalogsicht in den Spalten mirroring_witness_state und mirroring_witness_state_desc aufgezeichnet. Weitere Informationen finden Sie unter sys.database_mirroring (Transact-SQL).
Die folgende Tabelle bietet eine Übersicht darüber, wie der Betriebsmodus einer Sitzung von ihren Transaktionssicherheitseinstellungen und dem Zeugenstatus abhängt.
Betriebsmodus |
Transaktionssicherheit |
Zeugenstatus |
---|---|---|
Modus mit hoher Leistung |
OFF |
NULL (kein Zeuge)2 |
Der Modus mit hoher Sicherheit ohne automatisches Failover |
FULL |
NULL (kein Zeuge) |
Der Modus mit hoher Sicherheit mit automatischem Failover1 |
FULL |
CONNECTED |
1 Wenn der Zeuge getrennt wird, sollten Sie WITNESS auf OFF festlegen, bis die Serverinstanz des Zeugen wieder verfügbar ist.
2 Wenn ein Zeuge im Modus für hohe Leistung vorhanden ist, nimmt er nicht an der Sitzung teil. Um die Datenbank verfügbar zu machen, müssen jedoch eine Verbindung mit mindestens zwei Serverinstanzen bestehen bleiben. Daher wird empfohlen, die WITNESS-Eigenschaft in Sitzungen im Modus für hohe Leistung auf OFF festgelegt zu lassen. Weitere Informationen finden Sie unter Quorum: Auswirkungen eines Zeugen auf die Datenbankverfügbarkeit.
Anzeigen der Sicherheitseinstellung und des Status des Zeugen
Zum Anzeigen der Sicherheitseinstellung und des Status des Zeugen für eine Datenbank verwenden Sie die sys.database_mirroring-Katalogsicht. Die wichtigen Spalten sind die folgenden:
Faktor |
Spalten |
Beschreibung |
---|---|---|
Transaktionssicherheit |
mirroring_safety_level oder mirroring_safety_level_desc |
Transaktionssicherheitseinstellung für Aktualisierungen der Spiegeldatenbank: UNKNOWN OFF FULL NULL= Datenbank ist nicht online. |
Ist ein Zeuge vorhanden? |
mirroring_witness_name |
Servername des Datenbankspiegelungszeugen oder NULL. Damit wird angegeben, das kein Zeuge vorhanden ist. |
Zeugenstatus |
mirroring_witness_state oder mirroring_witness_state_desc |
Zeugenstatus in der Datenbank auf einem gegebenen Partner: UNKNOWN CONNECTED DISCONNECTED NULL = Es ist kein Zeuge vorhanden, oder die Datenbank ist nicht online. |
Geben Sie beispielsweise auf dem Prinzipal- oder Spiegelserver Folgendes ein:
SELECT mirroring_safety_level_desc, mirroring_witness_name, mirroring_witness_state_desc FROM sys.database_mirroring
Weitere Informationen zu dieser Katalogsicht finden Sie unter sys.database_mirroring (Transact-SQL).
So fügen Sie einen Zeugen hinzu
So entfernen Sie einen Zeugen
So ändern Sie die Transaktionssicherheit
Faktoren, die sich auf das Verhalten beim Verlust des Prinzipalservers auswirken
Die folgende Tabelle bietet eine Übersicht über die kombinierten Auswirkungen der Transaktionssicherheitseinstellung, des Status der Datenbank sowie des Zeugenstatus auf das Verhalten einer Spiegelungssitzung beim Verlust des Prinzipalservers.
Transaktionssicherheit |
Gespiegelter Status der gespiegelten Datenbank |
Zeugenstatus |
Verhalten beim Verlust des Prinzipals |
---|---|---|---|
FULL |
SYNCHRONIZED |
CONNECTED |
Automatisches Failover tritt auf. |
FULL |
SYNCHRONIZED |
DISCONNECTED |
Der Spiegelserver wird beendet, Failover ist nicht möglich, und die Datenbank kann nicht zur Verfügung gestellt werden. |
OFF |
SUSPENDED oder DISCONNECTED |
NULL (kein Zeuge) |
Die Ausführung des Dienstes wird auf dem Spiegelserver erzwungen (mit möglichem Datenverlust). |
FULL |
SYNCHRONIZING oder SUSPENDED |
NULL (kein Zeuge) |
Die Ausführung des Dienstes wird auf dem Spiegelserver erzwungen (mit möglichem Datenverlust). |
Siehe auch