Problembehandlung beim Einrichten einer Datenbankspiegelung

Aktualisiert: 17. November 2008

Dieses Thema enthält Informationen, die Ihnen die Problembehandlung beim Einrichten einer Datenbank-Spiegelungssitzung erleichtern.

Problem Zusammenfassung

Konten

Erläutert die Anforderungen für eine ordnungsgemäße Konfiguration der Konten, unter denen SQL Server ausgeführt wird.

Endpunkte

Erläutert die Anforderungen für eine ordnungsgemäße Konfiguration des Endpunktes der Datenbankspiegelung für jede Serverinstanz.

Systemadresse

Gibt einen Überblick über die verschiedenen Methoden, die zum Angeben des Systemnamens einer Serverinstanz in einer Datenbank-Spiegelungskonfiguration zur Verfügung stehen.

Netzwerkzugriff

Dokumentiert die Anforderung, dass jeder Serverinstanz der Zugriff auf die Ports der anderen Serverinstanz bzw. Serverinstanzen über TCP ermöglicht werden muss.

Vorbereitung der Spiegeldatenbank

Gibt einen Überblick über die Anforderungen zum Vorbereiten der Spiegeldatenbank, sodass die Spiegelung beginnen kann.

Fehler bei einem Dateierstellungsvorgang

Beschreibt, wie auf Fehler bei einem Dateierstellungsvorgang zu reagieren ist.

Starten der Spiegelung (Transact-SQL)

Beschreibt, welche Reihenfolge für ALTER DATABASE database_name SET PARTNER ='partner_server'-Anweisungen eingehalten werden muss.

Konten

Die Konten, unter denen SQL Server ausgeführt wird, müssen richtig konfiguriert sein.

  1. Verfügen die Konten über die richtigen Berechtigungen?
    1. Das Ausführen der Konten in den gleichen Domänenkonten reduziert das Risiko einer Fehlkonfiguration.
    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. Weitere Informationen finden Sie unter Verwalten von Metadaten beim Bereitstellen einer Datenbank auf einer anderen Serverinstanz. Dies gilt auch für das Netzwerkdienstkonto.
  2. Wird SQL Server als Dienst unter dem lokalen Systemkonto ausgeführt, müssen Sie Zertifikate für die Authentifizierung verwenden. Weitere Informationen finden Sie unter Verwenden von Zertifikaten für die Datenbankspiegelung.

Endpunkte

Endpunkte müssen richtig konfiguriert sein.

  1. Stellen Sie sicher, dass jede Serverinstanz (Prinzipalserver, Spiegelserver und ggf. Zeuge) über einen Endpunkt der Datenbankspiegelung verfügt. Weitere Informationen finden Sie unter sys.database_mirroring_endpoints (Transact-SQL) sowie, je nach Form der Authentifizierung, unter Vorgehensweise: Erstellen eines Endpunktes der Datenbankspiegelung für Windows-Authentifizierung (Transact-SQL) oder Vorgehensweise: Ermöglichen des Verwendens von Zertifikaten für ausgehende Verbindungen für die Datenbankspiegelung (Transact-SQL).

  2. Überprüfen Sie, ob die Portnummern richtig sind.
    Verwenden Sie die folgende Transact-SQL-Anweisung, um den Port zu identifizieren, der derzeit dem Endpunkt der Datenbankspiegelung einer Serverinstanz zugeordnet ist:

    SELECT type_desc, port FROM sys.tcp_endpoints;
    GO
    
  3. Bei Problemen mit der Einrichtung der Datenbankspiegelung, die schwer zu erklären sind, empfiehlt es sich, durch Prüfen jeder Serverinstanz zu ermitteln, ob die richtigen Ports von der Serverinstanz überwacht werden. Informationen zum Überprüfen der Verfügbarkeit von Ports finden Sie unter MSSQLSERVER_1418.

  4. Stellen Sie sicher, dass die Endpunkte gestartet wurden (STATE=STARTED). Verwenden Sie auf jeder Serverinstanz folgende Transact-SQL-Anweisung:

    SELECT state_desc FROM sys.database_mirroring_endpoints
    

    Weitere Informationen zur state_desc-Spalte finden Sie unter sys.database_mirroring_endpoints (Transact-SQL).
    Verwenden Sie die folgende Transact-SQL-Anweisung, um einen Endpunkt zu starten:

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

  5. Überprüfen Sie, ob die Rolle richtig ist. Verwenden Sie auf jeder Serverinstanz folgende Transact-SQL-Anweisung:

    SELECT role FROM sys.database_mirroring_endpoints;
    GO
    

    Weitere Informationen finden Sie unter sys.database_mirroring_endpoints (Transact-SQL).

  6. Stellen Sie sicher, dass der Anmeldename auf dem anderen Server über CONNECT-Berechtigungen verfügt. Führen Sie auf jeder Serverinstanz die folgende Transact-SQL-Anweisung aus, um herauszufinden, wer über CONNECT-Berechtigungen für einen Endpunkt verfügt:

    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
    

Systemadresse

Für den Systemnamen einer Serverinstanz in einer Datenbank-Spiegelungskonfiguration können Sie jeden beliebigen Namen verwenden, der das System eindeutig bezeichnet. 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). Bei Verwendung des vollqualifizierten Domänennamens ist eine problemfreie Funktionsweise sichergestellt. Weitere Informationen finden Sie unter Angeben einer Server-Netzwerkadresse (Datenbankspiegelung).

Netzwerkzugriff

Jede Serverinstanz muss über TCP auf die Ports der anderen Serverinstanz bzw. der anderen Serverinstanzen zugreifen können. Dies ist insbesondere von Bedeutung, wenn sich die Serverinstanzen in unterschiedlichen Domänen befinden, die sich nicht vertrauen (nicht vertrauenswürdige Domänen). Damit wird ein Großteil der Kommunikation zwischen den Serverinstanzen eingeschränkt.

Vorbereitung der Spiegeldatenbank

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

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. Darüber hinaus müssen alle Protokollsicherungen, die nach dieser Sicherung erstellt wurden, ebenfalls mithilfe von WITH NORECOVERY angewendet werden.

Außerdem sollte der Pfad (einschließlich des Laufwerkbuchstabens) der Spiegeldatenbank nach Möglichkeit mit dem Pfad der Prinzipaldatenbank übereinstimmen. Falls sich die Dateilayouts unterscheiden müssen, weil sich die Prinzipaldatenbank beispielsweise auf Laufwerk 'F:' befindet, auf dem Spiegelsystem jedoch kein Laufwerk F: vorhanden ist, müssen Sie in der RESTORE STATEMENT-Anweisung die Option MOVE verwenden.

ms189127.note(de-de,SQL.90).gifWichtig:
Wenn Sie die Datenbankdateien beim Erstellen der Spiegeldatenbank verschieben, können Sie der Datenbank später u. U. keine Dateien hinzufügen, ohne dass die Spiegelung unterbrochen wird.

Wurde die Datenbankspiegelung angehalten, müssen alle nachfolgenden Protokollsicherungen in der Prinizipaldatenbank auf die Spiegeldatenbank angewendet werden, ehe die Spiegelung erneut gestartet werden kann.

Weitere Informationen finden Sie unter Vorgehensweise: Vorbereiten einer Spiegeldatenbank für die Spiegelung (Transact-SQL).

Fehler bei einem Dateierstellungsvorgang

Damit eine Datei ohne Auswirkungen auf eine Spiegelungssitzung hinzugefügt werden kann, muss der Pfad der Datei auf beiden Servern vorhanden sein. Wenn Sie die Datenbankdateien beim Erstellen der Spiegeldatenbank verschieben, können dieser unter Umständen später keine Dateien hinzugefügt werden. Zudem wird möglicherweise die Spiegelung unterbrochen.

So beheben Sie dieses Problem

  1. Der Datenbankbesitzer muss die Spiegelungssitzung entfernen und eine vollständige Sicherung der Dateigruppe wiederherstellen, die die hinzugefügte Datei enthält.
  2. Anschließend muss der Besitzer das Protokoll mit dem Vorgang zum Hinzufügen einer Datei auf dem Prinzipalserver sichern und die Protokollsicherung mithilfe der Optionen WITH NORECOVERY und WITH MOVE auf der Spiegeldatenbank manuell wiederherstellen. Dadurch werden der angegebene Dateipfad auf dem Spiegelserver erstellt und die neue Datei an diesem Speicherort wiederhergestellt.
  3. Um die Datenbank auf eine neue Spiegelungssitzung vorzubereiten, muss der Besitzer außerdem alle anderen ausstehenden Protokollsicherungen vom Prinzipalserver mithilfe von WITH NORECOVERY wiederherstellen.

Weiter Informationen finden Sie unter Entfernen der Datenbankspiegelung, Vorgehensweise: Vorbereiten einer Spiegeldatenbank für die Spiegelung (Transact-SQL), Vorgehensweise: Einrichten einer Datenbank-Spiegelungssitzung mithilfe der Windows-Authentifizierung (Transact-SQL), Verwenden von Zertifikaten für die Datenbankspiegelung oder Vorgehensweise: Konfigurieren einer Datenbank-Spiegelungssitzung (SQL Server Management Studio).

Starten der Spiegelung (Transact-SQL)

Die Reihenfolge, in der die ALTER DATABASE database_name SET PARTNER ='partner_server'-Anweisungen ausgegeben werden, ist von großer Bedeutung:

  1. Die erste Anweisung muss auf dem Spiegelserver ausgeführt werden. Wird diese Anweisung ausgegeben, versucht der Spiegelserver nicht, Kontakt zu anderen Serverinstanzen aufzunehmen. Stattdessen weist der Spiegelserver die Datenbank an, so lange zu warten, bis der Prinzipalserver Kontakt mit dem Spiegelserver aufgenommen hat.
  2. Die zweite ALTER DATABASE-Anweisung muss auf dem Prinzipalserver ausgeführt werden. Diese Anweisung veranlasst den Prinzipalserver, eine Verbindung mit dem Spiegelserver herzustellen. Nachdem diese Verbindung erstellt wurde, versucht der Spiegelserver, den Prinzipalserver über eine andere Verbindung zu kontaktieren.

Weitere Informationen finden Sie unter ALTER DATABASE (Transact-SQL).

Fehlermeldung 1418

In dieser Meldung in SQL 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. Weitere Informationen finden Sie unter MSSQLSERVER_1418.

Datenbankübergreifende Transaktionen

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

Zu den Typen datenbankübergreifender Transaktionen, auf die sich ein automatisches Failover auswirken kann, zählen:

  • Eine Transaktion, die mehrere Datenbanken in derselben Instanz von SQL Server aktualisiert.
  • Transaktionen, die MS DTC (Microsoft Distributed Transaction Coordinator) verwenden.

Weitere Informationen finden Sie unter Datenbankspiegelung und datenbankübergreifende Transaktionen.

Siehe auch

Aufgaben

Vorgehensweise: Erstellen eines Endpunktes der Datenbankspiegelung für Windows-Authentifizierung (Transact-SQL)

Konzepte

Transportsicherheit bei der Datenbankspiegelung

Andere Ressourcen

Einrichten der Datenbankspiegelung

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

17. November 2008

Geänderter Inhalt:
  • Abschnitt "Fehler bei einem Dateierstellungsvorgang" vollständig überarbeitet.

14. April 2006

Neuer Inhalt:
  • Ein Abschnitt zur Handhabung einer Sitzung, die aufgrund eines Fehlers bei einem Dateierstellungsvorgang unterbrochen wird, wurde hinzugefügt.
  • Ein Abschnitt über datenbankübergreifende Transaktionen wurde hinzugefügt.
Geänderter Inhalt:
  • Der Abschnitt, wie bei einem Problem mit dem Protokolllaufwerk des Prinzipals zu reagieren ist, wurde entfernt, da das zugrunde liegende Problem gelöst wurde.

05. Dezember 2005

Neuer Inhalt:
  • Interpretieren von Fehlermeldung 1418
  • Überprüfen der Verfügbarkeit von Ports
Geänderter Inhalt:
  • Der Hinweis, dass der vollqualifizierte Domänenname die einzige Methode ist, das System eines Partners oder Zeugen zu identifizieren, wurde entfernt.