Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Vorsicht
Dieses Feature wird in einer zukünftigen Version von SQL Server entfernt. Vermeiden Sie die Verwendung dieses Features in neuer Entwicklungsarbeit, und planen Sie, Anwendungen zu ändern, die derzeit dieses Feature verwenden. Verwenden Sie für hohe Verfügbarkeit stattdessen AlwaysOn-Verfügbarkeitsgruppen.
Wichtig
Datenbankspiegelung in SQL Server ist nicht dasselbe wie die Datenbankspiegelung in Microsoft Fabric. Die Spiegelung in Fabric bietet eine bessere analytische Leistung, die Möglichkeit, Ihren Datenbestand mit OneLake in Fabric zu vereinheitlichen und offenen Zugriff auf Ihre Daten im Delta-Parquet-Format.
Mit dem Feature "Mirroring to Microsoft Fabric" können Sie Ihren vorhandenen Datenbestand kontinuierlich direkt in OneLake in Fabric replizieren, einschließlich Daten aus SQL Server 2016+, Azure SQL-Datenbank, Azure SQL Managed Instance, Cosmos DB, Oracle, Snowflake und weiteren Datenbanken.
Um einen Zeugen für eine Datenbank einzurichten, weist der Datenbankbesitzer einer Instanz der Datenbank-Engine die Rolle des Zeugenservers zu. Die Zeugenserverinstanz kann auf demselben Computer wie die Prinzipal- oder Spiegelserverinstanz ausgeführt werden. Hierdurch wird jedoch die Zuverlässigkeit des automatischen Failovers erheblich reduziert.
Wir raten dringend, den Zeugen auf einem separaten Computer zu platzieren. Ein Server kann an mehreren gleichzeitigen Datenbank-Spiegelungssitzungen mit den gleichen oder anderen Partnern teilnehmen. Ein Server kann bei manchen Sitzungen als Partnerserver und bei anderen Sitzungen als Zeugenserver dienen.
Der Witness ist ausschließlich für den Hochsicherheitsmodus mit automatischem Failover vorgesehen. Bevor Sie einen Zeugen festlegen, sollten Sie unbedingt sicherstellen, dass die SAFETY-Eigenschaft auf FULL festgelegt ist.
Wichtig
Es empfiehlt sich, die Konfiguration der Datenbankspiegelung außerhalb der Spitzenbetriebszeiten durchzuführen, da sich die Konfiguration auf die Leistung auswirken kann.
Zeugen einrichten
Stellen Sie für die Zeugenserverinstanz sicher, dass ein Endpunkt für die Datenbankspiegelung vorhanden ist. Unabhängig von der Anzahl von Spiegelungssitzungen, die unterstützt werden sollen, darf die Serverinstanz nur einen Endpunkt der Datenbankspiegelung aufweisen. Wenn Sie diese Serverinstanz ausschließlich als Zeugen in Datenbankspiegelungssitzungen verwenden möchten, weisen Sie dem Endpunkt die Rolle des Zeugen (ROLE**=**ZEUGEN) zu. Wenn Sie diese Serverinstanz als Partner bei mindestens einer Datenbank-Spiegelungssitzung verwenden möchten, weisen Sie die Rolle des Endpunkts als ALL zu.
Um eine SET WITNESS-Anweisung auszuführen, muss die Datenbankspiegelungssitzung bereits gestartet sein (zwischen den Partnern), und der Status des Endpunkts des Witness muss auf STARTED festgelegt sein.
Zur Feststellung, ob die Zeugenserverinstanz einen Endpunkt der Datenbankspiegelung aufweist, und zur Feststellung von deren Rolle und Status verwenden Sie in dieser Instanz die folgende Transact-SQL-Anweisung:
SELECT role_desc, state_desc FROM sys.database_mirroring_endpointsWichtig
Wenn ein Endpunkt für die Datenbankspiegelung vorhanden ist und bereits verwendet wird, empfiehlt es sich, diesen Endpunkt auf der Serverinstanz für jede Sitzung zu verwenden. Das Löschen eines verwendeten Endpunkts unterbricht die Verbindungen der bestehenden Sitzungen. Wenn für eine Sitzung ein Zeuge festgelegt wurde, kann das Löschen des Endpunkts für die Datenbankspiegelung dazu führen, dass der Prinzipalserver der Sitzung das Quorum verliert. In diesem Fall wird die Datenbank offline geschaltet und die Verbindung mit den Benutzern getrennt. Weitere Informationen finden Sie unter Quorum: Auswirkungen eines Zeugen auf die Datenbankverfügbarkeit (Datenbankspiegelung).
Wenn für den Witness kein Endpunkt vorhanden ist, finden Sie weitere Informationen unter Erstellen eines Datenbankspiegelungsendpunkts für die Windows-Authentifizierung (Transact-SQL).
Wenn die Partnerinstanzen unter unterschiedlichen Domänenbenutzerkonten ausgeführt werden, müssen Sie in der Master-Datenbank jeder Instanz eine Anmeldung für die einzelnen Konten erstellen. Weitere Informationen finden Sie unter Zulassen des Netzwerkzugriffs auf einen Datenbank-Spiegelungsendpunkt mithilfe der Windows-Authentifizierung (SQL Server).
Stellen Sie eine Verbindung mit dem primären Server her und führen Sie die folgende Anweisung aus:
ALTER DATABASE <database_name>SET WITNESS =<server_network_address>
Dabei ist <Datenbankname> der Name der zu spiegelnden Datenbank (dieser Name ist auf beiden Partnern gleich), und <Servernetzwerkadresse> ist die Servernetzwerkadresse der Zeugenserverinstanz.
Die Syntax für eine Server-Netzwerkadresse lautet folgendermaßen:
TCP://<Systemadresse>:<Port>
Dabei ist <Systemadresse> eine Zeichenfolge, die das Zielcomputersystem eindeutig identifiziert, und <Port> ist die vom Spiegelungsendpunkt der Partnerserverinstanz verwendete Portnummer. Weitere Informationen finden Sie unter Angeben einer Servernetzwerkadresse (Datenbankspiegelung).
In der Prinzipalserverinstanz legt die folgende ALTER DATABASE Anweisung beispielsweise den Zeugen fest. Der Datenbankname ist AdventureWorks, die Systemadresse lautet DBSERVER3, der Name des Zeugensystems, und der vom Datenbankspiegelungsendpunkt des Zeugen verwendete Port ist
7022:ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://DBSERVER3:7022'
Beispiel
Das folgende Beispiel erstellt einen Datenspiegelungszeugen. Auf der Witness-Serverinstanz (Standardinstanz auf WITNESSHOST4):
Erstellen Sie einen Endpunkt für diese Serverinstanz für die WITNESS-Rolle, die ausschließlich Port
7022verwendet.CREATE ENDPOINT Endpoint_Mirroring STATE=STARTED AS TCP (LISTENER_PORT=7022) FOR DATABASE_MIRRORING (ROLE=WITNESS) GOErstellen Sie ggf. ein Login für das Domänenbenutzerkonto der Partnerinstanzen, falls es sich unterscheidet; nehmen Sie beispielsweise an, dass der Zeuge als
SOMEDOMAIN\witnessuserausgeführt wird, die Partner jedoch alsMYDOMAIN\dbousername. Erstellen Sie die Anmeldung für Partner wie folgt:--Create a login for the partner server instances, --which are both running as MYDOMAIN\dbousername: USE master ; GO CREATE LOGIN [MYDOMAIN\dbousername] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account --of partners GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [MYDOMAIN\dbousername]; GOErstellen Sie auf jeder der Partnerserverinstanzen eine Anmeldung für die Witnesserverinstanz:
--Create a login for the witness server instance, --which is running as SOMEDOMAIN\witnessuser: USE master ; GO CREATE LOGIN [SOMEDOMAIN\witnessuser] FROM WINDOWS ; GO --Grant connect permissions on endpoint to login account --of partners GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [SOMEDOMAIN\witnessuser]; GOLegen Sie auf dem Prinzipalserver den Zeugen fest (der sich auf
WITNESSHOST4befindet):ALTER DATABASE AdventureWorks SET WITNESS = 'TCP://WITNESSHOST4:7022' GO
Hinweis
Die Servernetzwerkadresse gibt die Zielserverinstanz über die Portnummer an, die auf den Spiegelungsendpunkt der Instanz verweist.
Ein vollständiges Beispiel für das Anzeigen des Sicherheitssetups, das Vorbereiten der Spiegeldatenbank, das Einrichten der Partner und das Hinzufügen eines Zeugen finden Sie unter Einrichten der Datenbankspiegelung (SQL Server).
Siehe auch
ALTER DATABASE (Transact-SQL)
Zulassen des Netzwerkzugriffs auf einen Datenbank-Spiegelungsendpunkt mithilfe der Windows-Authentifizierung (SQL Server)
Erstellen eines Endpunkts der Datenbankspiegelung für Windows-Authentifizierung (Transact-SQL)
Einrichten einer Datenbank-Spiegelungssitzung mithilfe der Windows-Authentifizierung (Transact-SQL)
Entfernen des Zeugen aus einer Datenbank-Spiegelungssitzung (SQL Server)
Zeuge der Datenbankspiegelung