Datenbank-Momentaufnahmen (SQL Server)
Gilt für:SQL Server
Eine Datenbankmomentaufnahme ist eine schreibgeschützte statische Sicht einer SQL Server-Datenbank (die Quelldatenbank). Es ist transaktional konsistent mit der Quelldatenbank zum Zeitpunkt der Erstellung der Momentaufnahme und befindet sich immer in derselben Serverinstanz wie die Quelldatenbank. Während Datenbankmomentaufnahmen eine schreibgeschützte Ansicht der Daten im selben Zustand bereitstellen, in dem die Momentaufnahme erstellt wurde, wächst die Größe der Momentaufnahmendatei, wenn Änderungen an der Quelldatenbank vorgenommen werden.
Datenbankmomentaufnahmen können zwar bei wichtigen Schemaupgrades vorteilhaft sein und die Wiederherstellung in einen vorherigen Zustand ermöglichen, entscheidend ist jedoch, dass Momentaufnahmen die Notwendigkeit regulärer Sicherungen nicht ersetzen. Sie können Datenbankmomentaufnahmen nicht sichern oder wiederherstellen. Das bedeutet, dass diese mit einer stabilen Sicherungsstrategie verwendet werden sollten, um den Schutz von Daten und die Wiederherstellung bei Datenverlusten oder Beschädigungen sicherzustellen.
Datenbankmomentaufnahmen werden mithilfe des Syntax mit der AS SNAPSHOT OF
T-SQL erstellt.
In einer bestimmten Quelldatenbank können mehrere Momentaufnahmen vorhanden sein. Jede Datenbankmomentaufnahme wird beibehalten, bis sie vom Datenbankbesitzenden explizit gelöscht wird.
Hinweis
Datenbank-Momentaufnahmen stehen in keinerlei Zusammenhang mit Momentaufnahmesicherungen, Transact-SQL-Momentaufnahmesicherungen Momentaufnahmeisolationen von Transaktionen oder Momentaufnahmereplikationen.
Übersicht über Features
Datenbank-Snapshots funktionieren auf Ebene der Datenseiten. Bevor eine Seite der Quellendatenbank zum ersten Mal geändert wird, wird die Originalseite der Quellendatenbank auf die Momentaufnahme kopiert. In der Momentaufnahme wird die Originalseite gespeichert, wodurch die Datensätze in dem Zustand erhalten werden, wie sie zum Zeitpunkt der Momentaufnahmeerstellung vorhanden waren. Derselbe Vorgang wird für jede Seite wiederholt, die zum ersten Mal geändert wird. Dem Benutzer scheint sich ein Datenbanksnapshot nie zu verändern, da Lesevorgänge in einem Datenbanksnapshot immer auf die ursprünglichen Datenseiten zugreifen, unabhängig von ihrem Speicherort.
In der Momentaufnahme werden die kopierten ursprünglichen Seiten mithilfe einer oder mehrerer platzsparender Dateien gespeichert. Zunächst ist eine Sparse-Datei eine leere Datei, die keine Benutzerdaten enthält und der noch kein Speicherplatz für Benutzerdaten zugewiesen wurde. Die Dateigröße wächst, wenn mehr Seiten in der Quelldatenbank aktualisiert werden. Die folgende Abbildung veranschaulicht die Auswirkungen zweier unterschiedlicher Updatemuster auf die Größe einer Momentaufnahme. Das Updatemuster A spiegelt eine Umgebung wider, in der nur 30 Prozent der Originalseiten während der Lebensspanne der Momentaufnahme aktualisiert werden. Das Updatemuster B spiegelt eine Umgebung wider, in der 80 Prozent der Originalseiten während der Lebensspanne der Momentaufnahme aktualisiert werden.
Vorteile
Momentaufnahmen können zur Berichterstellung verwendet werden.
- Clients können eine Datenbankmomentaufnahme abfragen, was beim Verfassen von Berichten auf Grundlage dieser Daten hilfreich ist, sobald die Momentaufnahme erstellt wurde.
Verwalten von Vergangenheitsdaten zur Berichterstellung.
- Eine Momentaufnahme kann Benutzerzugriff auf Daten eines bestimmten Zeitpunkts erweitern. Sie können z. B. eine Datenbankmomentaufnahme für spätere Berichte am Ende eines bestimmten Zeitraums erstellen (z. B. ein Finanzquartal). Auf diese Weise können Sie Quartalsabschlussberichte in der Momentaufnahme ausführen. Wenn Speicherplatz verfügbar ist, können Sie Momentaufnahmen der Endperioden auch dauerhaft speichern, sodass Abfragen der Ergebnisse dieser Zeiträume möglich sind, um beispielsweise die Leistung der Organisation zu untersuchen.
Verwenden einer Spiegeldatenbank, die Sie aus Gründen der Verfügbarkeit verwalten, um die Berichterstellung auszulagern
- Wenn Sie Datenbankmomentaufnahmen mit Datenbankspiegelungen verwenden, können Sie die auf dem Spiegelserver gespeicherten Daten für die Berichterstellung zugreifbar machen. Darüber hinaus können durch das Ausführen von Abfragen in der Spiegeldatenbank Ressourcen für den Prinzipal freigeben werden. Weitere Informationen finden Sie unter Datenbankspiegelung und Datenbankmomentaufnahmen (SQL Server)verwendet.
Schützen der Daten vor administrativen Fehlern.
Wenn ein Benutzerfehler in einer Quelldatenbank auftritt, können Sie diese auf den Zustand bei der Erstellung einer Datenbankmomentaufnahme zurücksetzen. Der Datenverlust beschränkt sich auf Updates der Datenbank, die nach der Erstellung der Momentaufnahme vorgenommen wurden.
Beispiel: Erstellen Sie zum Schutz von Daten vor dem Ausführen größerer Updates eine Datenbankmomentaufnahme auf der Datenbank. Diese Updates könnten beispielsweise Massenupdates oder Schemaänderung einschließen. Im Falle eines Fehlers können Sie die Datenbank mithilfe des Snapshots in dem Status wiederherstellen, der bei Erstellen des Snapshots vorlag. Das Zurücksetzen ist schneller als das Wiederherstellen aus einer Sicherung. Sie können danach jedoch kein Rollback ausführen.
Wichtig
Die Wiederherstellung kann nicht für Offlinedatenbanken oder für beschädigte Datenbanken verwendet werden. Daher sind regelmäßige Sicherungen und Tests Ihres Wiederherstellungsplans erforderlich, um eine Datenbank zu schützen.
Hinweis
Datenbankmomentaufnahmen sind von der Quelldatenbank abhängig. Daher ist die Verwendung von Momentaufnahmen zum Wiederherstellen einer Datenbank kein Ersatz für Ihre Sicherungs- und Wiederherstellungsstrategie. Daher ist es wichtig, dass Sie die Sicherungen wie geplant ausführen. Wenn Sie die Quelldatenbank an dem Punkt wiederherstellen müssen, an dem Sie eine Datenbankmomentaufnahme erstellt haben, implementieren Sie eine Sicherungsrichtlinie, mit der Sie dies tun können.
Schützen der Daten vor Benutzerfehlern.
Durch das regelmäßige Erstellen von Datenbanksnapshots können Sie die Auswirkungen eines Benutzerfehlers, wie z. B. einer gelöschten Tabelle, verringern. Bei einer hohen Sicherheitsstufe sollten Sie für einen ausreichend großen Zeitraum eine Reihe von Datenbankmomentaufnahmen erstellen, sodass die meisten Benutzerfehler erkannt werden und entsprechend reagiert werden kann. Je nach Datenträgerressourcen können Sie z. B. 6 bis 12 rollende Momentaufnahmen verwalten, die ein 24-Stunden-Intervall umfassen. Immer wenn eine neue Momentaufnahme erstellt wird, kann die jeweils älteste Momentaufnahme gelöscht werden.
Bei der Wiederherstellung im Falle eines Benutzerfehlers können Sie die Datenbank in dem Status des Snapshots wiederherstellen, der unmittelbar vor Auftreten des Fehlers erstellt wurde. Das Zurücksetzen ist potenziell weitaus schneller als das Wiederherstellen aus einer Sicherung. Sie können danach jedoch kein Rollback ausführen.
Alternativ können Sie eine gelöschte Tabelle oder weitere verlorene Daten ebenfalls auf Basis der in einer Momentaufnahme verfügbaren Informationen wiederherstellen. Beispielsweise können Sie die Daten von der Momentaufnahme in die Datenbank massenkopieren und die Daten manuell mit den in der Datenbank gespeicherten Daten zusammenführen.
Hinweis
Die jeweiligen Gründe für die Verwendung von Datenbankmomentaufnahmen entscheiden darüber, wie viele gleichzeitige Momentaufnahmen von einer Datenbank benötigt werden, wie regelmäßig eine neue Momentaufnahme erstellt wird und wie lange eine Momentaufnahme aufbewahrt wird.
Verwalten einer Testdatenbank.
- In einer Testumgebung kann es nützlich sein, dass die Datenbank zu Beginn jeder Testrunde identische Daten enthält, wenn sie wiederholt ein Testprotokoll ausführen. Vor dem Starten der ersten Runde kann ein Anwendungsentwickler oder Tester eine Momentaufnahme der Testdatenbank erstellen. Nach jeder Testrunde kann die Datenbank durch Wiederherstellen des Datenbankmomentaufnahmen schnell wieder in den früheren Zustand zurückversetzt werden.
Begriffe und Definitionen
Datenbankmomentaufnahmen in SQL Server umfassen mehrere wichtige Begriffe und Definitionen. Eine Datenbankmomentaufnahme ist eine schreibgeschützte, statische Sicht einer Datenbank zu einem bestimmten Zeitpunkt. Diese Datenbank wird als Quelldatenbank bezeichnet. Die Quelldatenbank ist die ursprüngliche Datenbank, auf der die Momentaufnahme basiert, und sie muss online und erreichbar bleiben, damit die Momentaufnahme verwendet werden kann. Platzsparende Dateien speichern die ursprünglichen Seiten der Quelldatenbank, die seit der Erstellung der Momentaufnahme geändert wurden. Diese Dateien sind anfangs leer und wachsen, wenn Änderungen in der Quelldatenbank auftreten. Das Verständnis dieser Begriffe ist für die effektive Verwaltung und Nutzung von Datenbankmomentaufnahmen in SQL Server unerlässlich.
Datenbankmomentaufnahme
Eine im Hinblick auf Transaktionen konsistente, schreibgeschützte statische Sicht einer Datenbank (die Quelldatenbank).
Quelldatenbank
Bei einer Datenbankmomentaufnahme die Datenbank, für die die Momentaufnahme erstellt wurde. Datenbankmomentaufnahmen sind von der Quelldatenbank abhängig. Die Momentaufnahmen einer Datenbank müssen sich auf der gleichen Serverinstanz wie die Datenbank selbst befinden. Falls diese Datenbank aus irgendeinem Grund nicht verfügbar ist, sind auch ihre Schnappschüsse nicht verfügbar.
Sparsedatei
Das NTFS-Dateisystem stellt eine Datei bereit, die viel weniger Speicherplatz benötigt, als andernfalls erforderlich wäre. Eine Sparsedatei wird zum Speichern von in eine Datenbankmomentaufnahme kopierten Seiten verwendet. Unmittelbar nach dem Erstellen beanspruchen Sparsedateien nur wenig Speicherplatz. Während Daten in eine Datenbankmomentaufnahme geschrieben werden, ordnet NTFS der entsprechenden Sparsedatei schrittweise den Speicherplatz zu.
Voraussetzungen
Die Quelldatenbank, die ein Wiederherstellungsmodell verwenden kann, muss die folgenden Voraussetzungen erfüllen:
Die Serverinstanz muss auf einer Edition von SQL Server ausgeführt werden, die Datenbank-Snapshots unterstützt.
- Weitere Informationen finden Sie unter Von den SQL Server 2016-Editionen unterstützte Funktionen.
Die Quelldatenbank muss online sein, es sei denn, es handelt sich um eine Spiegeldatenbank innerhalb einer Datenbankspiegelungssitzung.
Sie können einen Datenbank-Snapshot in einer Verfügbarkeitsgruppe für jede primäre oder sekundäre Datenbank erstellen. Die Replikatrolle muss entweder PRIMARY oder SECONDARY sein und darf nicht den Status RESOLVING aufweisen.
Der Datenbanksynchronisierungsstatus sollte SYNCHRONIZING oder SYNCHRONIZED sein, wenn Sie eine Datenbankmomentaufnahme erstellen. Datenbankmomentaufnahmen können jedoch erstellt werden, wenn der Status NOT SYNCHRONIZING lautet.
- Weitere Informationen finden Sie unter Datenbankmomentaufnahmen bei Always On-Verfügbarkeitsgruppen (SQL Server).
Zum Erstellen einer Datenbankmomentaufnahme für die Spiegeldatenbank muss sich die Datenbank im synchronisierten Spiegelungsstatus befinden.
Die Quelldatenbank kann nicht als skalierbare freigegebene Datenbank konfiguriert werden.
Vor SQL Server 2019 konnte die Quelldatenbank keine MEMORY_OPTIMIZED_DATA Dateigruppe enthalten. Die Unterstützung für In-Memory Database-Momentaufnahmen wurde in SQL Server 2019 hinzugefügt.
Alle Wiederherstellungsmodelle unterstützen Datenbankmomentaufnahmen.
Einschränkungen für die Quelldatenbank
Solange eine Datenbankmomentaufnahme vorhanden ist, sind die folgenden Einschränkungen für die Quelldatenbank der Momentaufnahme vorhanden:
Die Datenbank kann nicht entfernt, getrennt oder wiederhergestellt werden.
Das Sichern der Quelldatenbank funktioniert in der Regel, wird jedoch nicht durch Datenbankmomentaufnahmen beeinflusst.
Die Leistung ist aufgrund einer Erhöhung der E/A-Vorgänge in der Quelldatenbank reduziert. Diese Erhöhung wird dadurch verursacht, dass bei jeder Aktualisierung einer Seite ein Kopie bei Schreibvorgang in der Momentaufnahme ausgeführt wird.
Dateien können weder aus der Quelldatenbank noch aus Schnappschüssen entfernt werden.
Einschränkungen für Datenbank-Snapshots
Datenbankmomentaufnahmen hängen von der Quelldatenbank ab und schützen nicht vor Datenträgerfehlern oder Beschädigungen. Daher sollten sie, während sie für Berichtszwecke oder bei Schemaänderungen nützlich sein können, regelmäßige Sicherungspraktiken ergänzen und nicht ersetzen. Wenn Sie die Quelldatenbank an dem Punkt wiederherstellen müssen, an dem Sie eine Datenbankmomentaufnahme erstellt haben, implementieren Sie eine Sicherungsrichtlinie, mit der Sie dies tun können.
Für Datenbankmomentaufnahmen gelten die folgenden Einschränkungen:
Eine Datenbankmomentaufnahme muss auf der gleichen Serverinstanz erstellt und gespeichert werden, auf der sich auch die Quelldatenbank befindet.
Datenbankmomentaufnahmen gelten immer für die gesamte Datenbank.
Datenbankmomentaufnahmen hängen von der Quelldatenbank ab. Außerdem handelt es sich dabei nicht um redundanten Speicher. Sie schützen nicht vor Datenträgerfehlern oder anderen Arten von Beschädigungen. Daher ist die Verwendung von Momentaufnahmen zum Wiederherstellen einer Datenbank kein Ersatz für Ihre Sicherungs- und Wiederherstellungsstrategie. Daher ist es wichtig, dass Sie die Sicherungen wie geplant ausführen. Wenn Sie die Quelldatenbank an dem Punkt wiederherstellen müssen, an dem Sie eine Datenbankmomentaufnahme erstellt haben, implementieren Sie eine Sicherungsrichtlinie, mit der Sie dies tun können.
Wenn eine Seite, die in der Quelldatenbank aktualisiert wird, mithilfe von Push in eine Momentaufnahme übertragen wird und für diese dabei nicht genügend Speicherplatz vorhanden ist oder ein anderer Fehler auftritt, wird die Momentaufnahme fehlerverdächtig, und sie muss gelöscht werden.
Momentaufnahmen sind schreibgeschützt. Da sie nur lesbar sind, können sie nicht aktualisiert werden. Deshalb sind Datenbankmomentaufnahmen nach einem Upgrade nicht mehr gültig.
Momentaufnahmen der Datenbanken
model
,master
undtempdb
sind nicht zulässig.Sie können keine der Spezifikationen der Datenbank-Momentaufnahmedateien ändern.
Sie können in einer Datenbankmomentaufnahme keine Dateien löschen.
Sie können Datenbankmomentaufnahmen nicht sichern oder wiederherstellen.
Sie können Datenbankmomentaufnahmen nicht anfügen oder trennen.
Sie können keine Datenbankmomentaufnahmen auf dem FAT32-Dateisystem oder auf RAW-Partitionen erstellen. Das NTFS-Dateisystem stellt die platzsparenden Dateien bereit, die von Datenbankmomentaufnahmen verwendet werden.
Die Volltextindizierung wird für Datenbankmomentaufnahmen nicht unterstützt. Volltextkataloge werden nicht von der Quelldatenbank aus weitergegeben.
Eine Datenbankmomentaufnahme erbt die Sicherheitseinschränkungen seiner Quelldatenbank zum Zeitpunkt der Erstellung der Momentaufnahme. Da Momentaufnahmen schreibgeschützt sind, können geerbte Berechtigungen nicht geändert werden, und an der Quelle vorgenommene Berechtigungsänderungen werden nicht in vorhandenen Momentaufnahmen wiedergegeben.
Eine Momentaufnahme gibt stets den Status von Dateigruppen zum Zeitpunkt der Erstellung der Momentaufnahmen wieder: Onlinedateigruppen bleiben online und Offlinedateigruppen offline. Weitere Informationen finden Sie unter „Datenbankmomentaufnahmen mit Offlinedateigruppen“ weiter unten in diesem Artikel.
Wenn eine Quelldatenbank den Status RECOVERY_PENDING aufweist, kann auf ihre Momentaufnahmen möglicherweise nicht mehr zugegriffen werden. Nachdem das Problem mit der Quelldatenbank gelöst wurde, sollten ihre Momentaufnahmen jedoch erneut verfügbar werden.
Die Wiederherstellung wird für schreibgeschützte oder komprimierte NTFS-Dateien in der Datenbank nicht unterstützt. Versuche, eine Datenbank zurückzugeben, die einen dieser Dateigruppentypen enthält, schlagen fehl.
In einer Protokollversandkonfiguration können Datenbankmomentaufnahmen lediglich für die primäre Datenbank und nicht für eine sekundäre Datenbank erstellt werden. Angenommen, Sie wechseln die Rollen zwischen den primären und sekundären Serverinstanzen. In diesem Fall müssen Sie alle Datenbank-Snapshots löschen, bevor Sie die primäre Datenbank als sekundäre Datenbank einrichten.
Eine Datenbankmomentaufnahme kann nicht als skalierbare freigegebene Datenbank konfiguriert werden.
Datenbankmomentaufnahmen unterstützen keine FILESTREAM-Dateigruppen. Wenn FILESTREAM-Dateigruppen in einer Quelldatenbank vorhanden sind, werden sie in ihren Datenbankmomentaufnahmen als offline markiert, und die Momentaufnahmen können nicht zum Wiederherstellen der Datenbank verwendet werden.
Hinweis
In einer SELECT-Anweisung, die für eine Datenbankmomentaufnahme ausgeführt wird, darf keine FILESTREAM-Spalte angegeben werden, da andernfalls die folgende Fehlermeldung zurückgegeben wird: Could not continue scan with NOLOCK due to data movement.
- Wenn Statistiken zu einer schreibgeschützten Momentaufnahme fehlen oder veraltet sind, erstellt und verwaltet die Datenbank-Engine temporäre Statistiken in
tempdb
. Weitere Informationen finden Sie unter Statistik.
Speicherplatz
Datenbankmomentaufnahmen belegen Datenträgerspeicher. Wenn für eine Datenbankmomentaufnahme nicht genügend Speicherplatz vorhanden ist, wird er als fehlerverdächtig gekennzeichnet, und er muss gelöscht werden. (Die Quelldatenbank ist jedoch nicht betroffen; Vorgänge darauf laufen normal weiter.)
Momentaufnahmen sind jedoch im Vergleich zu einer vollständigen Kopie einer Datenbank äußerst platzsparend. Bei einer Momentaufnahme ist nur genügend Speicher für die Seiten erforderlich, die während seiner Lebensdauer geändert werden. Im Allgemeinen werden Momentaufnahmen für einen begrenzten Zeitraum aufbewahrt, sodass ihre Größe kein erhebliches Problem darstellt.
Je länger Sie jedoch eine Momentaufnahme behalten, desto wahrscheinlicher ist es, den verfügbaren Speicherplatz zu nutzen. Die maximale Größe, auf die eine platzsparende Datei anwachsen kann, ist die Größe der entsprechenden Quelldatenbankdatei zum Zeitpunkt der Erstellung der Momentaufnahme. Eine Datenbankmomentaufnahme muss gelöscht werden, wenn für sie nicht genügend Speicherplatz vorhanden ist.
Hinweis
Abgesehen vom Dateispeicherplatz nimmt eine Datenbankmomentaufnahme ungefähr so viele Ressourcen in Anspruch wie eine Datenbank.
Offlinedateigruppen
Offlinedateigruppen in der Quelldatenbank haben Auswirkungen auf Datenbankmomentaufnahmen, wenn Sie versuchen, einen der folgenden Vorgänge auszuführen:
Erstellen Sie eine Momentaufnahme.
- Wenn eine Quelldatenbank über eine oder mehrere Offlinedateigruppen verfügt, verläuft die Erstellung der Momentaufnahme erfolgreich, wenn die Dateigruppen offline sind. Platzsparende Dateien werden für die Offlinedateigruppen nicht erstellt.
Offlineschalten einer Dateigruppe
- Sie können eine Datei in der Quelldatenbank offline schalten. Die Dateigruppe bleibt in Datenbankmomentaufnahmen jedoch online, wenn sie zum Zeitpunkt der Erstellung der Momentaufnahme online war. Wenn sich die abgefragten Daten seit der Erstellung der Momentaufnahme geändert haben, kann auf die ursprüngliche Datenseite in der Momentaufnahme zugegriffen werden. Abfragen, die mithilfe der Momentaufnahmen auf ungeänderte Daten in der Dateigruppe zugreifen, schlagen jedoch wahrscheinlich mit E/A-Fehlern fehl.
Onlineschalten einer Dateigruppe
- Sie können eine Dateigruppe in einer Datenbank nicht online schalten, die über Datenbankmomentaufnahmen verfügt. Wenn eine Dateigruppe zum Zeitpunkt der Momentaufnahmeerstellung offline ist oder offline geschaltet wird, während eine Datenbankmomentaufnahme vorhanden ist, bleibt sie offline. Das liegt daran, dass eine Datei beim Onlineschalten wiederhergestellt wird. Das ist jedoch nicht möglich, wenn in der Datenbank eine Datenbankmomentaufnahme vorhanden ist.
Wiederherstellen der Quelldatenbank mit der Momentaufnahme
- Wenn Sie eine Quelldatenbank auf eine Datenbankmomentaufnahme zurücksetzen, müssen alle Dateigruppen online sein, mit Ausnahme derjenigen, die offline waren, als die Momentaufnahme erstellt wurde.
Verwandte Inhalte
- Datenbankspiegelung und Datenbankmomentaufnahmen (SQL Server)
- CREATE DATABASE - Datenbankmomentaufnahme
- Erstellen einer Datenbankmomentaufnahme (Transact-SQL)
- Anzeigen einer Datenbank-Momentaufnahme (SQL Server)
- Anzeigen der Größe der Datei mit geringer Dichte einer Datenbank-Momentaufnahme (Transact-SQL)
- Wiederherstellen einer Datenbank zu einer Datenbank-Momentaufnahme
- Löschen einer Datenbankmomentaufnahme (Transact-SQL)