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.

HinweisHinweis

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).

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).