Problembehandlung für die Datenbankspiegelungskonfiguration (SQL Server)Troubleshoot Database Mirroring Configuration (SQL Server)

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions)

Dieses Thema enthält Informationen, die Ihnen die Problembehandlung beim Einrichten einer Datenbank-Spiegelungssitzung erleichtern.This topic provides information to help you troubleshoot problems in setting up a database mirroring session.

Hinweis

Stellen Sie sicher, dass alle Voraussetzungen für die Datenbankspiegelungerfüllt werden.Ensure that you are meeting all the prerequisites for database mirroring.

ProblemIssue ZusammenfassungSummary
Fehlermeldung 1418Error Message 1418 In dieser Meldung in SQL ServerSQL Server wird angegeben, dass die Servernetzwerkadresse nicht erreicht werden kann oder nicht vorhanden ist. Es wird vorgeschlagen, den Namen der Netzwerkadresse zu überprüfen und den Befehl erneut auszugeben.This SQL ServerSQL Server message indicates that the server network address cannot be reached or does not exist, and it suggests that you verify the network address name and reissue the command.
KontenAccounts Erläutert die Anforderungen für eine ordnungsgemäße Konfiguration der Konten, unter denen SQL ServerSQL Server ausgeführt wird.Discusses requirements for correctly configuring the accounts under which SQL ServerSQL Server is running.
EndpunkteEndpoints Erläutert die Anforderungen für eine ordnungsgemäße Konfiguration des Endpunkts der Datenbankspiegelung für jede Serverinstanz.Discusses requirements for correctly configuring the database mirroring endpoint of each server instance.
SystemAddressSystemAddress Gibt einen Überblick über die verschiedenen Methoden, die zum Angeben des Systemnames einer Serverinstanz in einer Datenbank-Spiegelungskonfiguration zur Verfügung stehen.Summarizes the alternatives for specifying the system name of a server instance in a database mirroring configuration.
NetzwerkzugriffNetwork access Dokumentiert die Anforderung, dass jeder Serverinstanz der Zugriff auf die Ports der anderen Serverinstanz bzw. Serverinstanzen über TCP ermöglicht werden muss.Documents the requirement that each the server instance be able to access the ports of the other server instance or instances over TCP.
Vorbereitung der SpiegeldatenbankMirror database preparation Gibt einen Überblick über die Anforderungen zum Vorbereiten der Spiegeldatenbank, sodass die Spiegelung beginnen kann.Summarizes the requirements for preparing the mirror database to enable mirroring to start.
Fehler bei einem DateierstellungsvorgangFailed create-file operation Beschreibt, wie auf Fehler bei einem Dateierstellungsvorgang zu reagieren ist.Describes how to respond to a failed create-file operation.
Starten der Spiegelung mit Transact-SQLStarting mirroring by Using Transact-SQL Beschreibt, welche Reihenfolge für ALTER DATABASE database_name SET PARTNER =' partner_server ' -Anweisungen eingehalten werden muss.Describes the required order for ALTER DATABASE database_name SET PARTNER ='partner_server' statements.
Datenbankübergreifende TransaktionenCross-Database Transactions Ein automatisches Failover kann zu einer automatischen und möglicherweise falschen Auflösung von unsicheren Transaktionen führen.An automatic failover could lead to automatic and possibly incorrect resolution of in-doubt transactions. Aus diesem Grund werden datenbankübergreifende Transaktionen von der Datenbankspiegelung nicht unterstützt.For this reason database mirroring does not support cross-database transactions.

KontenAccounts

Die Konten, unter denen SQL ServerSQL Server ausgeführt wird, müssen ordnungsgemäß konfiguriert sein.The accounts under which SQL ServerSQL Server is running must be correctly configured.

  1. Verfügen die Konten über die richtigen Berechtigungen?Do the accounts have the correct permissions?

    1. Das Ausführen der Konten in den gleichen Domänenkonten reduziert das Risiko einer Fehlkonfiguration.If the accounts are running in the same domain accounts, the chances of misconfiguration are reduced.

    2. Wenn die Konten in unterschiedlichen Domänen ausgeführt werden oder es sich nicht um Domänenkonten handelt, muss der Anmeldename eines Kontos in der master -Datenbank des anderen Computers erstellt werden, und diesem Anmeldenamen müssen CONNECT-Berechtigungen für den Endpunkt erteilt werden.If the accounts are running in different domains or are not domain accounts, the login of one account must be created in master on the other computer, and that login must be granted CONNECT permissions on the endpoint. Weitere Informationen finden Sie unter Verwalten von Metadaten beim Bereitstellen einer Datenbank auf einer anderen Serverinstanz (SQL Server).For more information, see Manage Metadata When Making a Database Available on Another Server Instance (SQL Server). Dies gilt auch für das Netzwerkdienstkonto.This includes the Network Service account.

  2. Wird SQL ServerSQL Server als Dienst unter dem lokalen Systemkonto ausgeführt, müssen Sie Zertifikate für die Authentifizierung verwenden.If SQL ServerSQL Server is running as a service that is using the local system account, you must use certificates for authentication. Weitere Informationen finden Sie unter Verwenden von Zertifikaten für einen Datenbankspiegelungs-Endpunkt (Transact-SQL).For more information, see Use Certificates for a Database Mirroring Endpoint (Transact-SQL).

EndpointsEndpoints

Endpunkte müssen ordnungsgemäß konfiguriert sein.Endpoints must be correctly configured.

  1. Stellen Sie sicher, dass jede Serverinstanz (Prinzipalserver, Spiegelserver und ggf. Zeuge) über einen Endpunkt der Datenbankspiegelung verfügt.Make sure that each server instance (the principal server, mirror server, and witness, if any) has a database mirroring endpoint. Weitere Informationen finden Sie unter sys.database_mirroring_endpoints (Transact-SQL) und, je nach Form der Authentifizierung, entweder unter Erstellen eines Endpunkts der Datenbankspiegelung für Windows-Authentifizierung (Transact-SQL) oder Verwenden von Zertifikaten für einen Datenbankspiegelungs-Endpunkt (Transact-SQL).For more information, see sys.database_mirroring_endpoints (Transact-SQL) and, depending on the form of authentication, either Create a Database Mirroring Endpoint for Windows Authentication (Transact-SQL) or Use Certificates for a Database Mirroring Endpoint (Transact-SQL).

  2. Überprüfen Sie, ob die Portnummern richtig sind.Check that the port numbers are correct.

    Verwenden Sie die sys.database_mirroring_endpoints -Katalogsicht und die sys.tcp_endpoints -Katalogsicht, um den Port zu identifizieren, der dem Endpunkt der Datenbankspiegelung einer Serverinstanz derzeit zugeordnet ist.To identify the port currently associated with database mirroring endpoint of a server instance, use the sys.database_mirroring_endpoints and sys.tcp_endpoints catalog views.

  3. Bei Problemen mit der Einrichtung der Datenbankspiegelung, die schwer zu erklären sind, empfiehlt es sich, jede Serverinstanz zu prüfen, um zu ermitteln, ob die richtigen Ports von der Serverinstanz überwacht werden.For database mirroring setup issues that are difficult to explain, we recommend that you inspect each server instance to determine whether it is listening on the correct ports.

  4. Stellen Sie sicher, dass die Endpunkte gestartet wurden (STATE=STARTED).Make sure that the endpoints are started (STATE=STARTED). Verwenden Sie auf jeder Serverinstanz folgende Transact-SQLTransact-SQL-Anweisung.On each server instance, use the following Transact-SQLTransact-SQL statement.

    SELECT state_desc FROM sys.database_mirroring_endpoints  
    

    Weitere Informationen zur state_desc-Spalte finden Sie unter database_mirroring_endpoints (Transact-SQL).For more information about the state_desc column, see sys.database_mirroring_endpoints (Transact-SQL).

    Verwenden Sie die folgende Transact-SQLTransact-SQL-Anweisung, um einen Endpunkt zu starten.To start an endpoint, use the following Transact-SQLTransact-SQL statement.

    ALTER ENDPOINT Endpoint_Mirroring   
    STATE = STARTED   
    AS TCP (LISTENER_PORT = <port_number>)  
    FOR database_mirroring (ROLE = ALL);  
    GO  
    

    Weitere Informationen finden Sie unter ALTER ENDPOINT (Transact-SQL).For more information, see ALTER ENDPOINT (Transact-SQL).

  5. Überprüfen Sie, ob die Rolle richtig ist.Check that the ROLE is correct. Verwenden Sie auf jeder Serverinstanz folgende Transact-SQLTransact-SQL-Anweisung.On each server instance use the following Transact-SQLTransact-SQL statement.

    SELECT role FROM sys.database_mirroring_endpoints;  
    GO  
    

    Weitere Informationen finden Sie unter sys.database_mirroring_endpoints (Transact-SQL).For more information, see sys.database_mirroring_endpoints (Transact-SQL).

  6. Um sich von der anderen Serverinstanz unter dem Dienstkonto anzumelden, ist die CONNECT-Berechtigung erforderlich.The login for the service account from the other server instance requires CONNECT permission. Stellen Sie sicher, dass der Anmeldename auf dem anderen Server über CONNECT-Berechtigungen verfügt.Make sure that the login from the other server has CONNECT permission. Führen Sie auf jeder Serverinstanz die folgende Transact-SQLTransact-SQL -Anweisung aus, um herauszufinden, wer über CONNECT-Berechtigungen für einen Endpunkt verfügt.To determine who has CONNECT permission for an endpoint, on each server instance use the following Transact-SQLTransact-SQL statement.

    SELECT 'Metadata Check';  
    SELECT EP.name, SP.STATE,   
       CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id))   
          AS GRANTOR,   
       SP.TYPE AS PERMISSION,  
       CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id))   
          AS GRANTEE   
       FROM sys.server_permissions SP , sys.endpoints EP  
       WHERE SP.major_id = EP.endpoint_id  
       ORDER BY Permission,grantor, grantee;   
    GO  
    
    

SystemadresseSystem Address

Für den Systemnamen einer Serverinstanz in einer Datenbank-Spiegelungskonfiguration können Sie jeden beliebigen Namen verwenden, der das System eindeutig bezeichnet.For the system name of a server instance in a database mirroring configuration, you can use any name that unambiguously identifies the system. Die Serveradresse kann ein Systemname sein (wenn sich die Systeme in derselben Domäne befinden), ein vollqualifizierter Domänenname oder eine IP-Adresse (vorzugsweise eine statische IP-Adresse).The server address can be a system name (if the systems are in the same domain), a fully qualified domain name, or an IP address (preferably, a static IP address). Bei Verwendung des vollqualifizierten Domänennamens ist eine problemfreie Funktionsweise sichergestellt.Using the fully qualified domain name is guaranteed to work. Weitere Informationen finden Sie unter Angeben einer Servernetzwerkadresse (Datenbankspiegelung).For more information, see Specify a Server Network Address (Database Mirroring).

Network AccessNetwork Access

Jede Serverinstanz muss über TCP auf die Ports der anderen Serverinstanz bzw. der anderen Serverinstanzen zugreifen können.Each server instance must be able to access the ports of the other server instance or instances over TCP. Dies ist insbesondere von Bedeutung, wenn sich die Serverinstanzen in unterschiedlichen Domänen befinden, die sich nicht vertrauen (nicht vertrauenswürdige Domänen).This is especially important if the server instances are in different domains that do not trust each other (untrusted domains). Damit wird ein Großteil der Kommunikation zwischen den Serverinstanzen eingeschränkt.This restricts much of the communication between the server instances.

Mirror Database PreparationMirror Database Preparation

Überprüfen Sie, ob die Spiegeldatenbank für die Spiegelung vorbereitet ist, unabhängig davon, ob Sie die Spiegelung zum ersten Mal starten oder nach dem Entfernen der Spiegelung erneut starten.Whether starting mirroring for the first time or starting it again after mirroring was removed, verify that the mirror database is prepared for mirroring.

Stellen Sie bei der Erstellung der Spiegeldatenbank auf dem Spiegelserver sicher, dass Sie die Sicherung der Prinzipaldatenbank wiederherstellen, wobei Sie mit WITH NORECOVERY denselben Datenbanknamen angeben.When you create the mirror database on the mirror server, make sure that you restore the backup of the principal database specifying the same database name WITH NORECOVERY. Darüber hinaus müssen alle Protokollsicherungen, die nach dieser Sicherung erstellt wurden, ebenfalls mithilfe von WITH NORECOVERY angewendet werden.Also, all log backups created after that backup was taken must also be applied, again WITH NORECOVERY.

Außerdem sollte der Dateipfad (einschließlich des Laufwerkbuchstabens) der Spiegeldatenbank nach Möglichkeit mit dem Pfad der Prinzipaldatenbank übereinstimmen.Also, we recommend that, if it is possible, the file path (including the drive letter) of the mirror database be identical to the path of the principal database. Wenn sich die Pfade unterscheiden müssen, weil sich beispielsweise die Prinzipaldatenbank auf Laufwerk 'F': befindet, auf dem Spiegelsystem jedoch kein Laufwerk F: vorhanden ist, müssen Sie die MOVE-Option in die RESTORE-Anweisung einschließen.If the file paths must differ, for example, if the principal database is on drive 'F:' but the mirror system lacks an F: drive, you must include the MOVE option in the RESTORE statement.

Wichtig

Falls Sie die Datenbankdateien bei der Erstellung der Spiegeldatenbank verschieben, können Sie der Datenbank später u. U. keine Dateien hinzufügen, ohne dass die Spiegelung unterbrochen wird.If you move the database files when you are creating the mirror database, you might be unable to add files to the database later without mirroring being suspended.

Wurde die Datenbankspiegelung angehalten, müssen alle nachfolgenden Protokollsicherungen in der Prinizipaldatenbank auf die Spiegeldatenbank angewendet werden, ehe die Spiegelung erneut gestartet werden kann.If database mirroring has been stopped, all subsequent log backups taken on the principal database must be applied to the mirror database before mirroring can be restarted.

Weitere Informationen finden Sie unter Vorbereiten einer Spiegeldatenbank auf die Spiegelung (SQL Server)verwendet.For more information, see Prepare a Mirror Database for Mirroring (SQL Server).

Failed Create-File OperationFailed Create-File Operation

Damit eine Datei ohne Auswirkung auf eine Spiegelungssitzung hinzugefügt werden kann, muss der Pfad der Datei auf beiden Servern vorhanden sein.Adding a file without impacting a mirroring session requires that the path of the file exist on both servers. Wenn Sie die Datenbankdateien bei der Erstellung der Spiegeldatenbank verschieben, kann bei einem später durchgeführten Vorgang zum Hinzufügen einer Datei in der Spiegeldatenbank ein Fehler auftreten oder die Spiegelung wird möglicherweise angehalten.Therefore, if you move the database files when creating the mirror database, a later add-file operation might fail on the mirror database and cause mirroring to be suspended.

So beheben Sie das Problem:To fix the problem:

  1. Der Datenbankbesitzer muss die Spiegelsitzung entfernen und eine vollständige Sicherung der Dateigruppe wiederherstellen, die die hinzugefügte Datei enthält.The database owner must remove the mirroring session and restore a full backup of the filegroup that contains the added file.

  2. Anschließend muss der Besitzer das Protokoll mit dem Vorgang zum Hinzufügen der Datei auf dem Prinzipalserver sichern und die Protokollsicherung auf der Spiegeldatenbank mithilfe der Optionen WITH NORECOVERY und WITH MOVE manuell wiederherstellen.The owner must then back up the log containing the add-file operation on the principal server and manually restore the log backup on the mirror database using the WITH NORECOVERY and WITH MOVE options. Dadurch wird der angegebene Dateipfad auf dem Spiegelserver erstellt, und die neue Datei wird an diesem Speicherort wiederhergestellt.Doing this creates the specified file path on the mirror server and restores the new file to that location.

  3. Um die Datenbank für eine neue Spiegelsitzung vorzubereiten, muss der Besitzer außerdem mit der Option WITH NO RECOVERY alle anderen ausstehenden Protokollsicherungen vom Prinzipalserver wiederherstellen.To prepare the database for a new mirroring session, the owner must also restore WITH NO RECOVERY any other outstanding log backups from the principal server.

Weitere Informationen finden Sie unter Entfernen der Datenbankspiegelung (SQL Server), Vorbereiten einer Spiegeldatenbank auf die Spiegelung (SQL Server), Einrichten einer Datenbank-Spiegelungssitzung mithilfe der Windows-Authentifizierung (Transact-SQL), Verwenden von Zertifikaten für einen Datenbankspiegelungs-Endpunkt (Transact-SQL), or Einrichten einer Datenbank-Spiegelungssitzung mithilfe der Windows-Authentifizierung (SQL Server Management Studio).For more information, see Removing Database Mirroring (SQL Server), Prepare a Mirror Database for Mirroring (SQL Server), Establish a Database Mirroring Session Using Windows Authentication (Transact-SQL), Use Certificates for a Database Mirroring Endpoint (Transact-SQL), or Establish a Database Mirroring Session Using Windows Authentication (SQL Server Management Studio).

Starten der Spiegelung mit Transact-SQLStarting mirroring by Using Transact-SQL

Die Reihenfolge, in der ALTER DATABASE database_name SET PARTNER =' partner_server ' -Anweisungen ausgegeben werden, ist von großer Bedeutung.The order in which the ALTER DATABASE database_name SET PARTNER ='partner_server' statements are issued is very important.

  1. Die erste Anweisung muss auf dem Spiegelserver ausgeführt werden.The first statement must be run on the mirror server. Wird diese Anweisung ausgegeben, versucht der Spiegelserver nicht, Kontakt zu anderen Serverinstanzen aufzunehmen.When this statement is issued, the mirror server does not try to contact any other server instance. Stattdessen weist der Spiegelserver die Datenbank an, so lange zu warten, bis der Prinzipalserver Kontakt mit dem Spiegelserver aufgenommen hat.Instead, the mirror server instructs its database to wait until the mirror server has been contacted by the principal server.

  2. Die zweite ALTER DATABASE-Anweisung muss auf dem Prinzipalserver ausgeführt werden.The second ALTER DATABASE statement must be run on the principal server. Diese Anweisung veranlasst den Prinzipalserver, eine Verbindung mit dem Spiegelserver herzustellen.This statement causes the principal server to try to connect to the mirror server. Nachdem diese Verbindung erstellt wurde, versucht der Spiegelserver, den Prinzipalserver über eine andere Verbindung zu kontaktieren.After that connection is created, the mirror then tries to connect to the principal server on another connection.

Weitere Informationen zu dieser Einstellung finden Sie unter ALTER DATABASE (Transact-SQL).For more information, see ALTER DATABASE (Transact-SQL).

Hinweis

Informationen zum Verwenden von SQL Server Management StudioSQL Server Management Studio, um Spiegelung zu starten, finden Sie unter Einrichten einer Datenbank-Spiegelungssitzung mithilfe der Windows-Authentifizierung (SQL Server Management Studio).For information about using SQL Server Management StudioSQL Server Management Studio to start mirroring, see Establish a Database Mirroring Session Using Windows Authentication (SQL Server Management Studio).

Datenbankübergreifende TransaktionenCross-Database Transactions

Wenn eine Datenbank im Modus für hohe Sicherheit mit automatischem Failover gespiegelt wird, kann ein automatisches Failover zu einer automatischen und möglicherweise falschen Auflösung von unsicheren Transaktionen führen.When a database is being mirrored in high-safety mode with automatic failover, an automatic failover could lead to automatic and possibly incorrect resolution of in-doubt transactions. Falls auf einer der Datenbanken ein automatisches Failover stattfindet, während für eine datenbankübergreifende Transaktion gerade ein Commit ausgeführt wird, können zwischen den Datenbanken logische Inkonsistenzen auftreten.If an automatic failover occurs on either database while a cross-database transaction is being committed, logical inconsistencies can occur between the databases.

Zu den Typen datenbankübergreifender Transaktionen, auf die sich ein automatisches Failover auswirken kann, zählen:The types of cross-database transactions that can be affected by an automatic failover include the following:

  • Eine Transaktion, die mehrere Datenbanken in derselben Instanz von SQL ServerSQL Serveraktualisiert.A transaction that is updating multiple databases in the same instance of SQL ServerSQL Server.

  • Transaktionen, die MicrosoftMicrosoft DTC (Microsoft Distributed Transaction Coordinator) verwenden.Transactions that use a MicrosoftMicrosoft Distributed Transaction Coordinator (MS DTC).

Weitere Informationen finden Sie unter Datenbankübergreifende Transaktionen und verteilte Transaktionen für Always On-Verfügbarkeitsgruppen oder Datenbankspiegelung (SQL Server).For more information, see Cross-Database Transactions and Distributed Transactions for Always On Availability Groups and Database Mirroring (SQL Server).

Weitere InformationenSee Also

Einrichten der Datenbankspiegelung (SQL Server) Setting Up Database Mirroring (SQL Server)
Transportsicherheit für Datenbankspiegelung und Always On-Verfügbarkeitsgruppen (SQL Server)Transport Security for Database Mirroring and Always On Availability Groups (SQL Server)