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.
Hinweis |
---|
Die master-, msdb-, temp- oder model-Systemdatenbanken können nicht gespiegelt werden. |
Prozedur
So erstellen Sie eine Datenbank für die Datenbankspiegelung
Stellen Sie sicher, dass MicrosoftSQL Server 2008 sowohl auf der Prinzipal- als auch auf der Spiegelserverinstanz installiert ist.
Ü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).
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).
Hinweis Alternativ können Sie eine vorhandene vollständige Datenbanksicherung (und optional eine differenzielle Datenbanksicherung) wiederherstellen. Abschließend können Sie alle nachfolgenden Protokollsicherungen wiederherstellen.
Stellen Sie sicher, dass das System, auf dem die Spiegeldatenbank erstellt werden soll, ein Datenträger mit ausreichend Speicherplatz für die Datenbank besitzt.
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.
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.
Hinweis 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.
Wichtig 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. Falls Sie daher die Datenbankdateien bei der Erstellung der Spiegeldatenbank verschieben, kann möglicherweise später beim Hinzufügen von Dateien ein Fehler in der Spiegeldatenbank auftreten und dazu führen, dass die Spiegelung unterbrochen wird. Informationen zum Umgang mit einem Fehler beim Vorgang zum Erstellen einer Datei finden Sie unter Problembehandlung bei der Bereitstellung einer Datenbankspiegelung.
Weitere Informationen finden Sie unter RESTORE (Transact-SQL) und RESTORE-Argumente (Transact-SQL).
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:
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.
Sicherheitshinweis |
---|
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. |
Wichtig |
---|
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 AdventureWorks-Beispieldatenbank verwendet, in der standardmäßig das einfache Wiederherstellungsmodell verwendet wird.
Damit die AdventureWorks-Datenbank für die Datenbankspiegelung verwendet werden kann, ändern Sie sie so, dass das vollständige Wiederherstellungsmodell verwendet wird.
USE master; GO ALTER DATABASE AdventureWorks SET RECOVERY FULL; GO
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:\AdventureWorks.bak) auf dem gleichen Laufwerk wie die Datenbank erstellt.
Hinweis 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 AdventureWorks TO DISK = 'C:\AdventureWorks.bak' WITH FORMAT GO
Kopieren Sie die vollständige Sicherung auf den Spiegelserver.
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 AdventureWorks FROM DISK = 'C:\AdventureWorks.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.
Wichtig 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 AdventureWorks FROM DISK='C:\AdventureWorks.bak' WITH NORECOVERY, MOVE 'AdventureWorks_Data' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Data.mdf', MOVE 'AdventureWorks_Log' TO 'D:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\AdventureWorks_Log.ldf'; GO
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 AdventureWorks TO DISK = 'C:\AdventureWorks.bak' GO
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:\AdventureWorks.bak wiederhergestellt:
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=1, NORECOVERY GO
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:\AdventureWorks.bak wiederhergestellt:
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.bak' WITH FILE=2, NORECOVERY GO RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.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.
Siehe auch