Snapshots
Mittels eines Snapshots kann der aktuelle Stand einer Datenbank schnell und einfach fixiert werden. Dabei werden die Änderungen in einen separaten Container geschrieben, sodass keine Kopie der Daten notwendig ist. Der benötigte Speicherplatz wächst mit den Änderungen. Wichtig dabei ist, dass die Snapshots nicht mit einer Kopie vergleichbar sind, denn liegt ein Defekt im Datenbanksystem vor, sodass die originale Datenbank aufgrund eines Fehlers nicht mehr gelesen werden kann, dann bringen auch die Snapshots nichts mehr. Snapshots können aufeinander aufbauen (z. B. jeden Monat inkrementell ein Snapshot), aber dann müssen alle lückenlos vorhanden sein.
Snapshot erstellen
Diese können nur mittels T-SQL erstellt werden, nicht über das SQL Server Management Studio. Der Snapshot ist vergleichbar mit einer eigenen Datenbank. Er kann wie diese angesteuert werden. Der Unterschied ist nur, dass keine Änderungen möglich sind. Es können nur Daten gelesen werden.
CREATE DATABASE db_snapshot_name
ON (
NAME = db_original_name,
FILENAME = 'D:\Data\db_snapshot_name.ss'
)
AS SNAPSHOT OF db_original_name;
GO
Weitere Informationen: Create a Database Snapshot
Snapshot wiederherstellen
-- Zum Wiederherstellen in die Master-DB wechseln
USE master;
RESTORE DATABASE db_original_name
FROM DATABASE_SNAPSHOT = 'db_snapshot_name';
GO
Weitere Informationen: Revert a Database to a Database Snapshot
Sollte das Wiederherstellen fehlschlagen, weil noch aktive Verbindungen bestehen, dann kann die Datenbank zeitweise in den Einzelbenutzer Modus geschalten werden. {{@183}}
Snapshot löschen
Das Löschen eines Snapshots ist vergleichbar mit dem Löschen einer Datenbank. Es werden die selben Rechte benötigt und alle Verbindungen zur DB werden gekappt.
DROP DATABASE db_snapshot_name;
Weitere Informationen: Drop a Database Snapshot
Reportings auf Snapshots
Lesevorgänge auf Snapshots haben keine Locks zur Folge. Somit wäre es denkbar, ein Reporting auf Basis von Snapshots zu bauen. Beispielsweise könnte 1x täglich ein Snapshot erstellt werden, sodass das Reporting auf diesen Snapshot basierend komplexe Abfragen ausführen kann. Eine Veränderung der Daten in den Snapshots ist nicht möglich, sie sind sozusagen zum Zeitpunkt XY eingefroren.