File-snapshot backups für Datenbankdateien in Azure

Gilt für:SQL Server

Das SQL Server-Dateisnapshot-Backup verwendet Azure-Snapshots, um nahezu sofortige Backups (und schnellere Wiederherstellungen) von Datenbankdateien zu ermöglichen, die in Azure Blob Storage gespeichert sind. Verwenden Sie Dateisnapshot-Backups, um Ihre Backup- und Wiederherstellungsrichtlinien zu vereinfachen.

Weitere Informationen zur Speicherung von Datenbankdateien in Azure Blob Storage finden Sie unter SQL Server Data Files in Microsoft Azure.

Diagramm zur Veranschaulichung der Snapshot-Sicherungsarchitektur.

Verfügen Sie bereits über ein Azure-Konto? Besuchen Sie SQL Server auf virtuellen Azure-Computern, um eine virtuelle Maschine zu erstellen, die SQL Server vorinstalliert hat.

Verwenden von Azure-Momentaufnahmen zum Sichern von in Azure gespeicherten Datenbankdateien

Was ist ein SQL Server-Dateisnapshot-Backup?

Ein Dateisnapshot-Backup ist eine Menge von Azure-Schnappschüssen der Blobs, die die Datenbankdateien enthalten, plus eine Backup-Datei mit Zeigern auf diese Dateisnapshots. Jeder Dateisnapshot befindet sich im Container mit dem Basisblob.

Du kannst die Sicherungsdatei auf URL, Festplatte oder Band schreiben, solltest aber wann immer möglich auf URL sichern. Weitere Informationen finden Sie unter BACKUP und SQL Server backup auf URL für Azure Blob Storage.

Diagramm der Architektur des Momentaufnahmefeatures.

Das Löschen des Basisblobs macht das Backup-Set ungültig. Man kann keinen Blob ablegen, der Dateisnapshots enthält, es sei denn, man entscheidet sich ausdrücklich, den Blob zusammen mit allen Dateisnapshots zu löschen. Das Entfernen einer Datenbank oder einer Datendatei löscht weder den Basis-Blob noch seine Datei-Snapshots, und das Löschen der Backup-Datei löscht keine der Datei-Snapshots im Backup-Satz. Verwenden Sie zum Löschen eines Dateisnapshot-Sicherungssatzes die gespeicherte Systemprozedur sys.sp_delete_backup.

Vollständiges Datenbank-Backup: Ein vollständiges Dateisnapshot-Backup nimmt einen Azure-Snapshot jeder Daten- und Logdatei in der Datenbank, stellt die Transaktionsprotokoll-Backup-Kette her und schreibt die Dateisnapshot-Standorte in die Backup-Datei.

Transaktionsprotokoll-Backup: Ein Transaktionsprotokoll-Snapshot-Backup nimmt einen Dateisnapshot jeder Datenbankdatei (nicht nur des Transaktionsprotokolls), erfasst die Standorte der Dateisnapshots in der Backup-Datei und kürzt das Transaktionsprotokoll.

Wichtig

Nach dem ersten vollständigen Backup, das die Transaktionsprotokoll-Backup-Kette etabliert (die selbst ein Dateisnapshot-Backup sein kann), benötigen Sie nur noch Transaktionsprotokoll-Backups. Jedes Transaktionsprotokoll-Snapshot-Backup-Set enthält Dateisnapshots jeder Datenbankdatei, sodass Sie es entweder für eine Datenbankwiederherstellung oder eine Logwiederherstellung verwenden können. Du brauchst keine zusätzlichen vollständigen oder differenziellen Backups, weil Azure Blob Storage die Unterschiede zwischen jedem Datei-Snapshot und dem aktuellen Zustand des Basis-Blobs abdeckt.

Ein Tutorial zur Nutzung von SQL Server mit Azure Blob Storage finden Sie unter Tutorial: Use Azure Blob Storage with SQL Server.

Wiederherstellen mit Dateisnapshot-Sicherungen

Jedes Dateisnapshot-Backup-Set enthält einen Dateisnapshot jeder Datenbankdatei, daher benötigt eine Wiederherstellung höchstens zwei benachbarte Dateisnapshot-Backup-Sets. Diese Anforderung gilt unabhängig davon, dass das Backup-Set aus einem vollständigen Datenbank-Backup oder einem Log-Backup stammt. Bei herkömmlichem Streaming-Backup benötigt der Wiederherstellungsprozess das vollständige Backup, ein differenziertes Backup und ein oder mehrere Transaktionsprotokoll-Backups. Der Erholungsschritt ist bei beiden Ansätzen gleich.

Zum Zeitpunkt eines beliebigen Backup-Sets: Um eine Datenbank auf den Zeitpunkt eines bestimmten Snapshot-Backup-Sets zurückzusetzen, RESTORE DATABASE benötigt nur dieses Backup-Set und die Basisblobs. Da RESTORE DATABASE es mit einem Transaktionsprotokoll-Dateisnapshot-Backup-Set funktioniert, verwendet man typischerweise ein Transaktionsprotokoll-Backup-Set und selten ein vollständiges Datenbank-Backup-Set. Sie finden dazu ein Beispiel später in diesem Artikel.

Zu einem Zeitpunkt zwischen zwei Dateisnapshot-Backup-Sätzen: Um eine Datenbank auf einen bestimmten Zeitpunkt zwischen zwei benachbarten Transaktionsprotokoll-Backup-Sets wiederherzustellen, RESTORE DATABASE werden nur zwei Transaktionsprotokoll-Backup-Sets benötigt: eines von vor dem Zeitpunkt, zu dem Sie die Datenbank wiederherstellen möchten, und eines von danach. Führe RESTORE DATABASE ... WITH NORECOVERY das frühere Backup-Set aus und dann RESTORE LOG ... WITH RECOVERY das spätere. Verwenden Sie das Argument, STOPAT um den Zeitpunkt anzugeben, an dem die Wiederherstellung aus dem Transaktionsprotokoll-Backup gestoppt werden soll. Sie finden dazu ein Beispiel später in diesem Artikel.

Wartung von Dateisicherungssätzen

Löschen eines Dateisnapshot-Backup-Sets: Du kannst ein File-Snapshot-Backup-Set nicht mit dem Argument FORMAT überschreiben. Das Argument FORMAT ist nicht erlaubt, weil es Dateisnapshots aus dem ursprünglichen Dateisnapshot-Backup verorphen kann. Um ein Backup-Set zu löschen, verwenden Sie das sys.sp_delete_backup System Stored Procedure. Es entfernt die Sicherungsdatei und alle Dateisnapshots im Set. Andere Löschmethoden könnten die Sicherungsdatei entfernen, aber die Dateisnapshots zurücklassen.

Löschen verwaister Backup-Dateisnapshots: Du könntest verwaiste Dateisnapshots bekommen, wenn du die Backup-Datei ohne sys.sp_delete_backuplöschst oder wenn du eine Datenbank oder Datendatei verlässt, während deren Blobs noch zugehörige Backup-Dateisnapshots haben. Um Kandidaten zu finden, verwenden Sie die sys.fn_db_backup_file_snapshots Systemfunktion, um jeden Dateisnapshot für die Datenbankdateien aufzulisten. Um zu sehen, welche Dateisnapshots zu einem bestimmten Backup-Set gehören, verwenden Sie das RESTORE FILELISTONLY systemgespeicherte Verfahren. Dann entferne ein Waisenkind mit dem System gespeicherten sys.sp_delete_backup_file_snapshot Verfahren. Siehe die Beispiele später in diesem Artikel.

Weitere Informationen findest du unter:

Überlegungen und Einschränkungen

Premium-Speicher: Wenn Sie Premium-Speicher verwenden, gelten folgende Einschränkungen:

Ein einzelnes Speicherkonto: Der Dateisnapshot und die Ziel-Blobs müssen dasselbe Speicherkonto verwenden.

Bulk-Wiederherstellungsmodell: Wenn Sie das bulk-loggte Wiederherstellungsmodell mit einem Transaktionsprotokoll-Backup verwenden, das minimal protokollierte Transaktionen enthält, können Sie das Protokoll (einschließlich der zeitlichen Wiederherstellung) nicht aus diesem Backup wiederherstellen. Stattdessen stellt man die Datenbank auf den Zeitpunkt des Dateisnapshot-Backup-Sets zurück. Die gleiche Einschränkung gilt für Streaming-Backups.

Online-Wiederherstellung: Sie können keine Online-Wiederherstellung aus einem Dateisnapshot-Backup durchführen. Weitere Informationen zur Onlinewiederherstellung finden Sie unter Onlinewiederherstellung (SQL Server).

Abrechnung: SQL Server-Dateisnapshot-Backup verursacht bei Datenänderungen Gebühren. Weitere Informationen finden Sie unter Wie Kosten für Snapshots anfallen.

Archivierung: Du kannst ein Dateisnapshot-Backup in Azure Blob Storage oder als Streaming-Backup archivieren. Für Azure Blob Storage kopieren Sie die Snapshots im Dateisnapshot-Backup-Set in separate Blobs. Für das Streaming-Backup stellen Sie das Dateisnapshot-Backup als neue Datenbank her und machen Sie anschließend ein reguläres Streaming-Backup mit Kompression und/oder Verschlüsselung. Du kannst das Archiv so lange behalten, wie du möchtest, unabhängig von den Basisblobs.

Wichtig

Das Führen mehrerer Dateisnapshot-Backups verursacht nur einen geringen Leistungsaufwand, aber zu viele Backups können die I/O-Leistung in der Datenbank beeinträchtigen. Bewahre nur die Dateisnapshot-Backups auf, die du für dein Ziel des Wiederherstellungspunkts brauchst.

Sichern Sie die Datenbank und das Protokoll mithilfe einer Dateisnapshot-Sicherung

Das folgende Beispiel verwendet ein Dateisnapshot-Backup, um die AdventureWorks2025 Beispieldatenbank auf eine URL zu sichern.

-- To permit log backups, before the full database backup, modify the database

-- to use the full recovery model.
USE master;
GO

ALTER DATABASE AdventureWorks2025
    SET RECOVERY FULL;
GO

-- Back up the full AdventureWorks2025 database.
BACKUP DATABASE AdventureWorks2025
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025.bak'
WITH FILE_SNAPSHOT;
GO

-- Back up the AdventureWorks2025 log using a timestamp in the backup file name.
DECLARE @Log_Filename AS VARCHAR (300);

SET @Log_Filename = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025_Log_'+
REPLACE (REPLACE (REPLACE (CONVERT (VARCHAR (40), GETDATE (), 120), '-','_'),':', '_'),' ', '_') + '.trn';

BACKUP LOG AdventureWorks2025
 TO URL = @Log_Filename WITH FILE_SNAPSHOT;
GO

Wiederherstellen aus einer SQL Server-Dateisnapshot-Sicherung

Das folgende Beispiel stellt die AdventureWorks2025 Datenbank durch Verwendung eines Transaktionsprotokoll-Dateisnapshot-Backup-Sets wieder her und zeigt eine Wiederherstellungsoperation. Sie können eine Datenbank aus einem einzigen Transaktionsprotokoll-Dateisnapshot-Backup-Set wiederherstellen.

RESTORE DATABASE AdventureWorks2025 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025_2026_05_18_16_00_00.trn'
    WITH RECOVERY, REPLACE;
GO

Wiederherstellung aus einer SQL Server-Dateisnapshot-Sicherung zu einem bestimmten Zeitpunkt

Das folgende Beispiel verwendet zwei Transaktionsprotokoll-Datei-Snapshot-Backup-Sets, um die AdventureWorks2025 Datenbank zu einem bestimmten Zeitpunkt in ihren Zustand zurückzusetzen, und zeigt eine Wiederherstellungsoperation.

RESTORE DATABASE AdventureWorks2025
    FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025_2026_05_18_16_00_00.trn'
    WITH NORECOVERY,
         REPLACE;
GO

RESTORE LOG AdventureWorks2025
    FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025_2026_05_18_18_00_00.trn'
    WITH RECOVERY,
         STOPAT = 'May 18, 2026 5:35 PM';
GO

Löschen eines Datenbankdateisnapshot-Sicherungssatzes

Verwenden Sie zum Löschen eines Dateisnapshot-Sicherungssatzes die gespeicherte Systemprozedur sys.sp_delete_backup. Fügen Sie den Datenbanknamen hinzu, damit das Verfahren überprüft, ob das Backup-Set ein Backup für diese Datenbank ist. Wenn Sie den Datenbanknamen weglassen, überspringt das Verfahren diese Prüfung und löscht das Backup-Set sowie dessen Dateisnapshots. Weitere Informationen finden Sie unter sp_delete_backup.

Warnung

Wenn Sie ein Backup-Dateisnapshot auf eine andere Weise löschen, zum Beispiel vom Azure-Portal oder vom Azure Storage-Knoten im Objekt-Explorer von SQL Server Management Studio, bleiben die Dateisnapshots zurück. Diese Tools entfernen nur die Backup-Datei, die die Zeiger auf die Dateisnapshots enthält. Um übrig gebliebene Dateisnapshots zu finden, verwenden Sie die sys.fn_db_backup_file_snapshots Systemfunktion und löschen Sie dann jedes einzelne mit der systemgespeicherten sys.sp_delete_backup_file_snapshot Prozedur.

Das folgende Beispiel löscht ein Dateisnapshot-Backup-Set, einschließlich seiner Backup-Datei und aller Dateisnapshots im Set.

EXECUTE sys.sp_delete_backup
    'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025.bak',
    'AdventureWorks2025';
GO

Datenbank-Backup-Datei-Snapshots anzeigen

Um die Dateisnapshots des Basisblobs für jede Datenbankdatei aufzulisten, verwenden Sie die sys.fn_db_backup_file_snapshots Systemfunktion. Man kann Backup-Dateisnapshots finden, die verbleiben, wenn etwas anderes als sys.sp_delete_backup das Löschen der Backup-Datei für ein Snapshot-Backup-Set gelöscht wird. Um zu sehen, welche Dateisnapshots zu einem intakten Backup-Set gehören, listen RESTORE FILELISTONLY Sie die Dateisnapshots auf, auf die jede Backup-Datei verweist. Weitere Informationen finden Sie unter sys.fn_db_backup_file_snapshots und RESTORE Aussagen - FILELISTONLY.

Das folgende Beispiel listet jeden Snapshot der Sicherungsdatei für eine Datenbank auf.

--Either specify the database name or set the database context
USE AdventureWorks2025;

SELECT *
FROM sys.fn_db_backup_file_snapshots(NULL);
GO

SELECT *
FROM sys.fn_db_backup_file_snapshots('AdventureWorks2025');
GO

Löschen Sie einen einzelnen Datenbank-Backup-Dateisnapshot

Um eine einzelne Sicherungsdatei-Snapshot eines datenbankbasierten Blobs zu löschen, verwenden Sie das systemgespeicherte sys.sp_delete_backup_file_snapshot Verfahren. Nutze es hauptsächlich, um verwaiste Dateisnapshots zu bereinigen, die verbleiben, wenn ein anderer Prozess als sys.sp_delete_backup die Sicherungsdatei löscht. Weitere Informationen finden Sie unter sp_delete_backup_file_snapshot.

Warnung

Das Löschen eines einzelnen Dateisnapshots, das zu einem Dateisnapshot-Backup-Set gehört, macht das Backup-Set ungültig.

Das folgende Beispiel löscht einen Snapshot der Sicherungsdatei. Du kannst die URL aus erhalten sys.fn_db_backup_file_snapshots.

EXECUTE sys.sp_delete_backup_file_snapshot
    N'AdventureWorks2025',
    N'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2025Data.mdf?snapshot=2026-05-29T21:31:31.6502195Z';
GO