Vorgehensweise: Vorbereiten einer Spiegeldatenbank für die Spiegelung (Transact-SQL)

Bevor eine Datenbank-Spiegelungssitzung gestartet werden kann, muss eine Spiegeldatenbank vorhanden sein. Der Name der Spiegeldatenbank muss mit dem Namen der Prinzipaldatenbank übereinstimmen. Der Datenbankbesitzer oder Systemadministrator kann die Spiegeldatenbank anhand einer aktuellen vollständigen Sicherung der Prinzipaldatenbank oder zumindest einer nachfolgenden Protokollsicherung erstellen. Die Spiegelung ist nur funktionsfähig, wenn die Spiegeldatenbank im Wiederherstellungsstatus verbleibt. Wenn Sie also eine Sicherung für eine Spiegeldatenbank wiederherstellen, müssen Sie für jeden Wiederherstellungsvorgang WITH NORECOVERY verwenden.

Wenn die Spiegelung entfernt wurde und die Spiegeldatenbank sich weiterhin im RECOVERING-Status befindet, können Sie die Spiegelung erneut starten. Allerdings muss zunächst mindestens eine Protokollsicherung für die Prinzipaldatenbank ausgeführt werden. Dann müssen Sie in der Spiegeldatenbank alle Protokollsicherungen mit WITH NORECOVERY wiederherstellen, die seit dem Entfernen der Spiegelung für die Prinzipaldatenbank ausgeführt wurden.

HinweisHinweis

Die master-, msdb-, temp- oder model-Systemdatenbanken können nicht gespiegelt werden.

Prozedur

So erstellen Sie eine Datenbank für die Datenbankspiegelung

  1. Stellen Sie sicher, dass Microsoft SQL Server 2008 sowohl auf der Prinzipal- als auch auf der Spiegelserverinstanz installiert ist.

  2. Überprüfen Sie, ob die Datenbank das vollständige Wiederherstellungsmodell verwendet.

    Weitere Informationen finden Sie unter Vorgehensweise: Anzeigen oder Ändern eines Wiederherstellungsmodells einer Datenbank (SQL Server Management Studio) oder sys.databases (Transact-SQL) und ALTER DATABASE (Transact-SQL).

  3. Erstellen Sie eine vollständige Datenbanksicherung der Prinzipaldatenbank.

    Weitere Informationen finden Sie unter Vorgehensweise: Sichern einer Datenbank (SQL Server Management Studio) oder Vorgehensweise: Erstellen einer vollständigen Datenbanksicherung (Transact-SQL).

    HinweisHinweis

    Alternativ können Sie eine vorhandene vollständige Datenbanksicherung (und optional eine differenzielle Datenbanksicherung) wiederherstellen. Abschließend können Sie alle nachfolgenden Protokollsicherungen wiederherstellen.

  4. Stellen Sie sicher, dass das System, auf dem die Spiegeldatenbank erstellt werden soll, ein Datenträger mit ausreichend Speicherplatz für die Datenbank besitzt.

  5. Kopieren Sie die Datenbanksicherung auf das System, es sei denn, die Datenbank befindet sich auf einem Netzlaufwerk, auf das von beiden System zugegriffen werden kann.

  6. Um die Spiegeldatenbank zu erstellen, stellen Sie auf der Spiegelserverinstanz die vollständige Datenbanksicherung wieder her. Die RESTORE DATABASE database_name-Anweisung muss WITH NORECOVERY angeben, wobei database_name der Name der zu spiegelnden Datenbank ist.

    HinweisHinweis

    Wenn Sie die Datenbank dateigruppenweise wiederherstellen, stellen Sie sicher, dass Sie die vollständige Datenbank wiederherstellen.

    Außerdem sollte der Pfad (einschließlich des Laufwerkbuchstabens) der Spiegeldatenbank nach Möglichkeit mit dem Pfad der Prinzipaldatenbank identisch ist.

    Falls sich die Dateilayouts 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.

    Wichtiger HinweisWichtig

    Damit eine Datei während einer Spiegelungssitzung hinzugefügt werden kann, ohne dass sich dies auf die Sitzung auswirkt, muss der Pfad der Datei auf beiden Servern vorhanden sein. 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. Informationen zum Umgang mit Fehlern bei einem Dateierstellungsvorgang finden Sie unter Problembehandlung bei der Bereitstellung einer Datenbankspiegelung.

    Weitere Informationen finden Sie unter RESTORE (Transact-SQL) und RESTORE-Argumente (Transact-SQL).

  7. Normalerweise muss mindestens eine Protokollsicherung in der Prinzipaldatenbank ausgeführt, auf den Spiegelserver kopiert und in der Spiegeldatenbank (mithilfe von WITH NORECOVERY) wiederhergestellt werden. Eine Protokollsicherung ist jedoch möglicherweise nicht erforderlich, wenn die Datenbank erst kürzlich erstellt wurde und bisher keine Protokollsicherung vorgenommen wurde oder wenn das Wiederherstellungsmodell soeben von SIMPLE in FULL geändert wurde.

    Zum Anwenden der Protokollsicherung auf die Spiegeldatenbank können Sie auf dem Spiegelserver entweder SQL Server oder Transact-SQL verwenden:

  8. Wurden zusätzliche Protokollsicherungen seit der erforderlichen Protokollsicherung in der Prinzipaldatenbank vorgenommen, müssen Sie auch diese auf den Spiegelserver kopieren und jede der Protokollsicherungen auf die Spiegeldatenbank anwenden, beginnend mit der frühesten und mithilfe von WITH NORECOVERY.

SicherheitshinweisSicherheitshinweis

TRUSTWORTHY wird beim Sichern einer Datenbank auf OFF festgelegt. Deshalb ist TRUSTWORTHY bei einer neuen Spiegeldatenbank immer OFF. Muss die Datenbank nach einem Failover vertrauenswürdig sein, sind zusätzliche Installationsschritte erforderlich. Weitere Informationen finden Sie unter Vorgehensweise: Einrichten der TRUSTWORTHY-Eigenschaft für eine Spiegeldatenbank.

Wichtiger HinweisWichtig

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

Beispiel

Bevor Sie eine Datenbank-Spiegelungssitzung starten können, müssen Sie die Spiegeldatenbank erstellen. Dies sollte vor dem Starten der Spiegelungssitzung erfolgen.

In diesem Beispiel wird die AdventureWorks2008R2-Beispieldatenbank verwendet, in der standardmäßig das einfache Wiederherstellungsmodell verwendet wird.

  1. Damit die AdventureWorks2008R2-Datenbank für die Datenbankspiegelung verwendet werden kann, ändern Sie sie so, dass das vollständige Wiederherstellungsmodell verwendet wird.

    USE master;
    GO
    ALTER DATABASE AdventureWorks2008R2 
    SET RECOVERY FULL;
    GO
    
  2. Nach dem Ändern des Wiederherstellungsmodells der Datenbank von SIMPLE in FULL erstellen Sie eine vollständige Sicherung, die zum Erstellen der Spiegeldatenbank verwendet werden kann. Da das Wiederherstellungsmodell soeben geändert wurde, wird die Option WITH FORMAT angegeben, um einen neuen Mediensatz zu erstellen. Dies ist hilfreich, um die Sicherungen unter dem vollständigen Wiederherstellungsmodell von vorherigen Sicherungen zu trennen, die unter dem einfachen Wiederherstellungsmodell erstellt wurden. Im Rahmen dieses Beispiels wird die Sicherungsdatei (C:\AdventureWorks2008R2.bak) auf dem gleichen Laufwerk wie die Datenbank erstellt.

    HinweisHinweis

    Bei einer Produktionsdatenbank sollten Sie die Sicherung stets auf einem separaten Medium erstellen.

    Erstellen Sie auf der Prinzipalserverinstanz (auf PARTNERHOST1) folgendermaßen eine vollständige Sicherung der Prinzipaldatenbank:

    BACKUP DATABASE AdventureWorks2008R2 
        TO DISK = 'C:\AdventureWorks2008R2.bak' 
        WITH FORMAT
    GO
    
  3. Kopieren Sie die vollständige Sicherung auf den Spiegelserver.

  4. Stellen Sie die vollständige Sicherung mit der Option WITH NORECOVERY auf der Spiegelserverinstanz wieder her. Der Wiederherstellungsbefehl hängt davon ab, ob die Pfade der Prinzipal- und Spiegeldatenbanken identisch sind.

    • Wenn die Pfade identisch sind, führen Sie Folgendes aus:

      Stellen Sie auf der Spiegelserverinstanz (auf PARTNERHOST5) folgendermaßen die vollständige Sicherung wieder her:

      RESTORE DATABASE AdventureWorks2008R2 
          FROM DISK = 'C:\AdventureWorks2008R2.bak' 
          WITH NORECOVERY
      GO
      
    • Wenn die Pfade unterschiedlich sind, führen Sie Folgendes aus:

      Wenn sich der Pfad der Spiegeldatenbank vom Pfad der Prinzipaldatenbank unterscheidet (z. B. wenn die Laufwerkbuchstaben unterschiedlich sind), ist es für das Erstellen der Spiegeldatenbank erforderlich, dass der Wiederherstellungsvorgang eine MOVE-Klausel einschließt.

      Wichtiger HinweisWichtig

      Wenn die Pfadnamen der Prinzipal- und Spiegeldatenbanken unterschiedlich sind, können Sie keine Datei hinzufügen. Der Grund hierfür besteht darin, dass die Spiegelserverinstanz beim Empfangen des Protokolls für das Hinzufügen einer Datei versucht, die neue Datei an dem Speicherort abzulegen, der von der Prinzipaldatenbank verwendet wird.

      So wird beispielsweise über den folgenden Befehl eine Sicherung einer Prinzipaldatenbank in C:\Programme\Microsoft SQL Server\MSSQL.n\MSSQL\Data\ an einem anderen Speicherort (D:\Programme\Microsoft SQL Server\MSSQL.n\MSSQL\Data\) erstellt; in diesem Verzeichnis soll die Spiegeldatenbank gespeichert werden.

      RESTORE DATABASE AdventureWorks2008R2
         FROM DISK='C:\AdventureWorks2008R2.bak'
         WITH NORECOVERY, 
            MOVE 'AdventureWorks2008R2_Data' TO 
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks2008R2_Data.mdf', 
            MOVE 'AdventureWorks2008R2_Log' TO
               'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks2008R2_Log.ldf';
      GO
      
  5. Nach dem Erstellen der vollständigen Sicherung müssen Sie eine Protokollsicherung in der Prinzipaldatenbank erstellen. Über die folgende Transact-SQL-Anweisung wird beispielsweise das Protokoll in derselben Datei gesichert, die auch bei der vorhergehenden vollständigen Sicherung verwendet wurde:

    BACKUP LOG AdventureWorks2008R2 
        TO DISK = 'C:\AdventureWorks2008R2.bak' 
    GO
    
  6. Sie können erst mit der Spiegelung beginnen, nachdem Sie die erforderliche Protokollsicherung (und alle nachfolgenden Protokollsicherungen) angewendet haben.

    So wird beispielsweise mit der folgenden Transact-SQL-Anweisung das erste Protokoll von C:\AdventureWorks2008R2.bak wiederhergestellt:

    RESTORE LOG AdventureWorks2008R2 
        FROM DISK = 'C:\AdventureWorks2008R2.bak' 
        WITH FILE=1, NORECOVERY
    GO
    
  7. Werden zusätzliche Protokollsicherungen vor dem Beginn der Spiegelung vorgenommen, müssen Sie auch all diese Protokollsicherungen nacheinander mithilfe von WITH NORECOVERY auf dem Spiegelserver wiederherstellen.

    So werden beispielsweise mit der folgenden Transact-SQL-Anweisung zwei zusätzliche Protokolle von C:\AdventureWorks2008R2.bak wiederhergestellt:

    RESTORE LOG AdventureWorks2008R2 
        FROM DISK = 'C:\AdventureWorks2008R2.bak' 
        WITH FILE=2, NORECOVERY
    GO
    RESTORE LOG AdventureWorks2008R2 
        FROM DISK = 'C:\AdventureWorks2008R2.bak' 
        WITH FILE=3, NORECOVERY
    GO
    

Ein vollständiges Beispiel für das Einrichten der Datenbankspiegelung, das Einrichten der Sicherheit, das Vorbereiten der Spiegeldatenbank, das Einrichten der Partner und das Hinzufügen eines Zeugen finden Sie unter Einrichten der Datenbankspiegelung.