Vorgehensweise: Einrichten, Verwalten und Onlineschalten eines betriebsbereiten Standbyservers (Transact-SQL)

Für das Einrichten eines Standbyservers ist es normalerweise erforderlich, dass auf dem primären Server eine umfassende Sicherung sowie regelmäßig Transaktionsprotokollsicherungen erstellt und diese Sicherungen dann der Reihe nach auf den Standbyserver angewendet werden. Zwischen Wiederherstellungsvorgängen verbleibt der Standbyserver in einem schreibgeschützten Status. Sobald es erforderlich ist, den Standbyserver verfügbar zu machen, werden alle ausstehenden Transaktionsprotokollsicherungen des primären Servers (einschließlich der Sicherung des aktiven Transaktionsprotokolls) auf den Standbyserver angewendet, und die Datenbank wird wiederhergestellt.

So erstellen Sie Sicherungen auf dem primären Server

  1. Führen Sie die BACKUP DATABASE-Anweisung aus, um die vollständige Sicherung zu erstellen.

  2. Führen Sie die BACKUP LOG-Anweisung aus, um eine Transaktionsprotokollsicherung zu erstellen.

  3. Wiederholen Sie Schritt 2 für jedes Transaktionsprotokoll, das im Zeitverlauf erstellt werden soll.

So richten Sie einen Standbyserver ein und warten ihn

  1. Führen Sie die RESTORE DATABASE-Anweisung aus, und verwenden Sie dabei die NORECOVERY-Klausel, um die in Schritt 1 erstellte vollständige Sicherung auf dem primären Server wiederherzustellen.

  2. Führen Sie die RESTORE LOG-Anweisung aus, und verwenden Sie dabei die STANDBY-Klausel, um jedes in Schritt 2 auf dem primären Server erstellte Transaktionsprotokoll anzuwenden. Geben Sie den Namen der Rückgängigdatei an, die die Inhalte der Datenseiten enthält, bevor für Transaktionen, für die noch kein Commit ausgeführt wurde und die sich auf die Datenseiten auswirken, ein Rollback ausgeführt wurde.

    HinweisHinweis

    Um beim Anwenden mehrerer Protokolle die Leistung zu verbessern, müssen Sie die WITH NORECOVERY-Klausel verwenden. Gelegentlich wird eine Standbydatei nur als schreibgeschützte Failoverkopie benötigt, sodass sie bei Offlineschaltung des Prinzipalservers verwendet werden kann.

  3. Wiederholen Sie Schritt 2 für jedes auf dem primären Server erstellte Transaktionsprotokoll.

So schalten Sie den Standbyserver online (der primäre Server ist ausgefallen)

  1. Sichern Sie möglichst das derzeit aktive Transaktionsprotokoll (das Protokollfragment). Zum Erstellen einer Protokollfragmentsicherung in dem Fall, dass die Datenbank nicht normal gestartet werden kann, führen Sie die BACKUP LOG-Anweisung für die primäre Datenbank mit WITH NO_TRUNCATE aus. Dies ist die letzte Transaktionsprotokollsicherung, die auf den Standbyserver angewendet wird, wenn der Standbyserver online geschaltet wird. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen einer Transaktionsprotokollsicherung (Transact-SQL).

  2. Führen Sie die RESTORE LOG-Anweisung mit der STANDBY-Klausel aus, um alle Transaktionsprotokollsicherungen (einschließlich der in Schritt 1 erstellten Sicherung des aktiven Transaktionsprotokolls) anzuwenden, die bisher noch nicht auf den Standbyserver angewendet wurden.

    HinweisHinweis

    Um beim Anwenden mehrerer Protokolle die Leistung zu verbessern, müssen Sie die WITH NORECOVERY-Klausel verwenden. Ein Beispiel für die Verwendung von WITH STANDBY bzw. WITH NORECOVERY finden Sie im Folgenden.

  3. Führen Sie die RESTORE DATABASE WITH RECOVERY-Anweisung aus, um die Datenbank wiederherzustellen und den Standbyserver online zu schalten.

Beispiel

In diesem Beispiel wird die MyAdvWorks-Datenbank auf einem Standbyserver eingerichtet. Sie können die Datenbank zwischen Wiederherstellungsvorgängen im schreibgeschützten Modus verwenden.

-- Restore the initial full backup on the standby server.
USE master
GO
RESTORE DATABASE MyAdvWorks
   FROM MyAdvWorks_1 
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the first transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log1
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the next transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log2
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Repeat for each transaction log backup created on the 
-- primary server.
--
-- Time elapses.. .. ..
--
-- The primary server has failed. Back up the 
-- tail of the transaction log on the primary server.
BACKUP LOG MyAdvWorks
   TO MyAdvWorks_log3
   WITH NO_TRUNCATE
GO
-- Apply the final (active) transaction log backup
-- to the standby server. All preceding transaction
-- log backups must have been already applied.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log3
   WITH NORECOVERY 
GO
-- Recover the database on the standby server, 
-- making it available for normal operations.
RESTORE DATABASE MyAdvWorks
   WITH RECOVERY
GO