Freigeben über


Datenbankspiegelung und Datenbanksnapshots

Sie können die Vorteile einer Spiegeldatenbank, die aus Gründen der Verfügbarkeit verwaltet wird, auch für die ausgelagerte Berichterstellung ausnutzen. Wenn Sie für die Berichterstellung eine Spiegeldatenbank verwenden möchten, können Sie einen Datenbanksnapshot für die Spiegeldatenbank erstellen und die Clientverbindungsanforderungen an den zuletzt erstellten Snapshot weiterleiten. Ein Datenbanksnapshot ist eine statische, schreibgeschützte, hinsichtlich der Transaktionen konsistente Momentaufnahme des Zustands einer Quelldatenbank, in dem sich diese zum Zeitpunkt der Erstellung des Snapshots befand. Zum Erstellen eines Datenbanksnapshots für die Spiegeldatenbank muss sich die Datenbank im synchronisierten Spiegelungsstatus befinden.

Im Gegensatz zur eigentlichen Spiegeldatenbank ist ein Datenbanksnapshot auch für Clients zugreifbar. Solange der Spiegelserver mit dem Prinzipalserver kommuniziert, können Sie Berichtsclients an eine Verbindung mit einem Snapshot weiterleiten. Da Datenbanksnapshots statisch sind, sind neue Daten nicht verfügbar. Sie müssen in regelmäßigen Abständen einen neuen Datenbanksnapshot erstellen und sicherstellen, dass Anwendungen eingehende Clientverbindungen an den neuesten Snapshot weiterleiten, um den Benutzern relativ neue Daten zur Verfügung zu stellen.

Ein neuer Datenbanksnapshot ist fast leer. Er nimmt jedoch im Laufe der Zeit an Größe zu, wenn immer mehr Datenbankseiten zum ersten Mal aktualisiert werden. Da jeder Snapshot für eine Datenbank auf diese Weise schrittweise größer wird, verbraucht jeder einzelne Datenbanksnapshot genauso viele Ressourcen wie eine normale Datenbank. Abhängig von der Konfiguration des Spiegelservers und des Prinzipalservers kann sich bei Vorhandensein einer übermäßig hohen Anzahl von Datenbanksnapshots auf einer Spiegeldatenbank die Leistung der Prinzipaldatenbank verringern. Sie sollten daher nur einige wenige, relativ neue Snapshots auf den Spiegeldatenbanken behalten. Nachdem Sie einen Ersatzsnapshot erstellt haben, sollten Sie eingehende Abfragen an den neuen Snapshot weiterleiten und den früheren Snapshot löschen, sobald alle aktuellen Abfragen abgeschlossen sind.

HinweisHinweis

Weitere Informationen zu Datenbanksnapshots finden Sie unter Datenbanksnapshots.

Wenn ein Rollenwechsel stattfindet, werden die Datenbank und die zugehörigen Snapshots neu gestartet, wobei die Verbindung mit den Benutzern vorübergehend getrennt wird. Anschließend verbleiben die Datenbanksnapshots auf der Serverinstanz, auf der sie erstellt wurden und die zur neuen Prinzipaldatenbank geworden ist. Die Snapshots können nach dem Failover weiter verwendet werden. Dies bedeutet für den neuen Prinzipalserver jedoch eine zusätzliche Belastung. Falls in Ihrer Umgebung die Leistung eine wichtige Überlegung ist, sollten Sie auf der neuen Spiegeldatenbank einen Snapshot erstellen, sobald diese verfügbar ist, die Clients zu dem neuen Snapshot umleiten und alle Datenbanksnapshots aus der früheren Spiegeldatenbank löschen.

HinweisHinweis

Wenn Sie eine dedizierte, gut skalierte Berichterstellung bevorzugen, sollten Sie eine Replikation in Betracht ziehen. Weitere Informationen finden Sie unter Datawarehousing- und Berichtsserver.

Beispiel

In diesem Beispiel werden Snapshots für eine gespiegelte Datenbank erstellt.

Angenommen, die AdventureWorks-Datenbank wird in einer Datenbank-Spiegelungssitzung verwendet. In diesem Beispiel werden drei Datenbanksnapshots für die Spiegelkopie der AdventureWorks-Datenbank erstellt, die sich auf Laufwerk F befindet. Die Snapshots werden mit AdventureWorks_0600, AdventureWorks_1200 und AdventureWorks_1800 bezeichnet, um den ungefähren Zeitpunkt ihrer Erstellung anzugeben.

  1. Erstellen Sie den ersten Datenbanksnapshot für den Spiegel von AdventureWorks.

    CREATE DATABASE AdventureWorks_0600
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_0600.SNP')
       AS SNAPSHOT OF AdventureWorks
    
  2. Erstellen Sie den zweiten Datenbanksnapshot für den Spiegel von AdventureWorks. Benutzer, die noch immer AdventureWorks_0600 verwenden, können diese auch weiterhin verwenden.

    CREATE DATABASE AdventureWorks_1200
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1200.SNP')
       AS SNAPSHOT OF AdventureWorks
    

    Die neuen Clientverbindungen können nun programmgesteuert an den zuletzt erstellten Snapshot weitergeleitet werden.

  3. Erstellen Sie den dritten Snapshot für den Spiegel von AdventureWorks. Benutzer, die immer noch AdventureWorks_0600 oder AdventureWorks_1200 verwenden, können diese auch weiterhin verwenden.

    CREATE DATABASE AdventureWorks_1800
    ON (NAME = 'datafile', FILENAME = 'F:\AdventureWorks_1800.SNP')
        AS SNAPSHOT OF AdventureWorks
    

    Die neuen Clientverbindungen können nun programmgesteuert an den zuletzt erstellten Snapshot weitergeleitet werden.