Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Eine SQL Server-Datenbankmomentaufnahme kann nur mithilfe von Transact-SQL erstellt werden. SQL Server Management Studio unterstützt die Erstellung von Datenbankmomentaufnahmen nicht.
Voraussetzungen
Die Quelldatenbank, die ein Wiederherstellungsmodell verwenden kann, muss die folgenden Voraussetzungen erfüllen:
Die Serverinstanz muss eine Edition von SQL Server ausführen, die Datenbankmomentaufnahmen unterstützt. Informationen zu unterstützten Datenbankmomentaufnahmen in SQL Server finden Sie unter Editionen und unterstützte Funktionen von SQL Server 2022.
Die Quelldatenbank muss online sein, es sei denn, bei der Datenbank handelt es sich um eine Spiegeldatenbank innerhalb einer Datenbank-Spiegelungssitzung.
Zum Erstellen einer Datenbank-Momentaufnahme für die Spiegeldatenbank muss sich die Datenbank im synchronisierten Spiegelungsstatusbefinden.
Die Quelldatenbank kann nicht als skalierbare freigegebene Datenbank konfiguriert werden.
Vor SQL Server 2019 (15.x) konnte die Quelldatenbank keine
MEMORY_OPTIMIZED_DATA-Dateigruppe enthalten. Die Unterstützung für In-Memory Database-Momentaufnahmen wurde in SQL Server 2019 (15.x) hinzugefügt.
Wichtig
Informationen zu anderen wichtigen Überlegungen finden Sie unter Datenbankmomentaufnahmen (SQL Server).
Empfehlungen
In diesem Abschnitt werden die folgenden bewährten Methoden erläutert:
- Bewährte Methode: Benennen von Datenbankmomentaufnahmen
- Bewährte Methode: Beschränken der Anzahl von Datenbankmomentaufnahmen
- Bewährte Methode für Clientverbindungen mit einem Datenbanksnapshot
Bewährte Methode: Benennen von Datenbankmomentaufnahmen
Vor dem Erstellen von Momentaufnahmen müssen Sie unbedingt überlegen, wie Sie diese benennen. Jede Datenbankmomentaufnahme erfordert einen eindeutigen Datenbanknamen. Um den Verwaltungsaufwand zu reduzieren, kann der Name einer Momentaufnahme Informationen enthalten, mit denen die Datenbank identifiziert wird:
Der Name der Quelldatenbank.
Ein Hinweis darauf, dass der neue Name für einen Snapshot ist.
Das Erstellungsdatum und die Erstellungszeit der Momentaufnahme, eine Sequenznummer oder sonstige Informationen, wie z. B. die Tageszeit, um sequenzielle Momentaufnahmen in einer bestimmten Datenbank zu unterscheiden
Betrachten Sie zum Beispiel eine Reihe von Snapshots für die AdventureWorks2025-Datenbank. Täglich werden drei Snapshots in Abständen von jeweils sechs Stunden zwischen 6:00 Uhr und 18:00 Uhr im 24-Stunden-Format erstellt. Jede tägliche Momentaufnahme wird nach 24 Stunden gelöscht und durch eine neue gleichnamige Momentaufnahme ersetzt. Jede Momentaufnahmename enthält einen Hinweis auf die Uhrzeit, aber nicht auf den Tag:
AdventureWorks_snapshot_0600
AdventureWorks_snapshot_1200
AdventureWorks_snapshot_1800
Falls alternativ die Erstellungszeit dieser täglichen Momentaufnahmen von Tag zu Tag variiert, ist möglicherweise eine weniger präzise Benennungskonvention vorzuziehen, wie beispielsweise:
AdventureWorks_snapshot_morning
AdventureWorks_snapshot_noon
AdventureWorks_snapshot_evening
Bewährte Methode: Beschränken der Anzahl von Datenbankmomentaufnahmen
Durch das Erstellen einer Reihe von Momentaufnahmen werden im Laufe der Zeit sequenzielle Momentaufnahmen der Quelldatenbank aufgezeichnet. Jede Momentaufnahme bleibt bestehen, bis sie explizit gelöscht wird. Da jede Momentaufnahme weiterhin wächst, wenn originale Seiten aktualisiert werden, sollten Sie Speicherplatz sparen, indem Sie eine ältere Momentaufnahme löschen, nachdem Sie eine neue Momentaufnahme erstellt haben.
Hinweis
Wenn Sie zu einer bestimmten Datenbank-Momentaufnahme zurückkehren möchten, müssen Sie alle anderen Momentaufnahmen dieser Datenbank löschen.
Bewährte Methode: Clientverbindungen zu einem Datenbank-Snapshot
Zur Verwendung einer Datenbankmomentaufnahme müssen die Clients wissen, wo sie diese finden. Die Benutzer können aus einer Datenbankmomentaufnahme lesen, während eine andere Datenbankmomentaufnahme erstellt oder gelöscht wird. Wenn Sie jedoch eine vorhandene Momentaufnahme durch eine neue Momentaufnahme ersetzen, müssen Sie Clients an die neue Momentaufnahme umleiten. Benutzer können manuell eine Verbindung mit einer Datenbankmomentaufnahme mit SQL Server Management Studio herstellen. Um eine Produktionsumgebung zu unterstützen, sollten Sie jedoch eine programmgesteuerte Lösung erstellen, die Clients zum Schreiben von Berichten transparent an den neuesten Datenbank-Snapshot weiterleitet.
Berechtigungen
Jeder Benutzer, der eine Datenbank erstellen kann, kann auch eine Datenbankmomentaufnahme erstellen. Eine Momentaufnahme einer Spiegeldatenbank kann jedoch nur von Mitgliedern der festen Serverrolle sysadmin erstellt werden.
Erstellen Sie eine Datenbank-Momentaufnahme mit Transact-SQL
Prüfen Sie die aktuelle Größe der Quelldatenbank, um sicherzustellen, dass der verfügbare Festplattenspeicher zum Speichern der Datenbankmomentaufnahme ausreicht. Die maximale Größe einer Datenbankmomentaufnahme beläuft sich auf die Größe der Quelldatenbank zum Zeitpunkt der Momentaufnahmeerstellung. Weitere Informationen finden Sie unter Anzeigen der Größe der Sparse-Datei eines Datenbanksnapshots.
Geben Sie eine
CREATE DATABASE-Anweisung für die Dateien mithilfe derAS SNAPSHOT OF-Klausel aus. Bei der Erstellung einer Momentaufnahme müssen die logischen Namen aller in der Quelldatenbank enthaltenen Datenbankdateien angegeben werden. Die Syntax lautet wie folgt:CREATE DATABASE database_snapshot_name ON ( NAME = logical_file_name , FILENAME = 'os_file_name' ) [ , ...n ] AS SNAPSHOT OF source_database_name [;]Die Argumente sind wie folgt:
Argument Beschreibung database_snapshot_nameDer Name des Snapshots, auf den Sie die Datenbank zurücksetzen möchten. logical_file_nameDer logische Name, den die Quelldatenbank in SQL Server verwendet, wenn sie auf die Datei verweist. os_file_nameDer Pfad und der Dateiname, die vom Betriebssystem beim Erstellen der Datei verwendet werden. source_database_nameDie Quelldatenbank. Eine vollständige Beschreibung dieser Syntax finden Sie unter CREATE DATABASE (SQL Server Transact-SQL).
Hinweis
Wenn Sie eine Datenbankmomentaufnahme erstellen, darf die
CREATE DATABASE-Anweisung weder Protokolldateien noch Offlinedateien, Wiederherstellungsdateien oder außer Kraft gesetzte Dateien enthalten.
Beispiele
Die in diesen Beispielen verwendete Erweiterung .ss ist einfach und nicht erforderlich. In Datenbanken, die mehrere Dateien enthalten, müssen alle Dateien in Übereinstimmung mit der Syntax angegeben werden. Dateigruppen werden nicht angegeben.
A. Erstellen eines Snapshots auf der AdventureWorks-Datenbank
In diesem Beispiel wird eine Datenbankmomentaufnahme für die AdventureWorks -Datenbank erstellt. Der Name der Momentaufnahme, AdventureWorks_dbss_1800, und der Dateiname der zugehörigen Sparse-Datei, AdventureWorks_data_1800.ss, weisen auf die Erstellungszeit 18:00 Uhr (1800 Uhr) hin.
CREATE DATABASE AdventureWorks_dbss1800 ON (
NAME = AdventureWorks,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss'
) AS SNAPSHOT OF AdventureWorks;
GO
B. Momentaufnahme der Sales-Datenbank erstellen
In diesem Beispiel wird ein Datenbank-Snapshot, sales_snapshot1200, für die Datenbank Sales erstellt, bei der es sich um dieselbe Beispieldatenbank aus Eine Datenbank mit Dateigruppen erstellen in CREATE DATABASE handelt.
--Create sales_snapshot1200 as snapshot of the Sales database:
CREATE DATABASE sales_snapshot1200 ON (
NAME = SPri1_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'
),
(
NAME = SPri2_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'
),
(
NAME = SGrp1Fi1_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'
),
(
NAME = SGrp1Fi2_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'
),
(
NAME = SGrp2Fi1_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'
),
(
NAME = SGrp2Fi2_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss'
) AS SNAPSHOT OF Sales;
GO