Dateimomentaufnahme-Sicherungen für Datenbankdateien in Azure

Gilt für: SQL Server

Bei der auf Momentaufnahmen basierenden Sicherung von SQL Server-Dateien werden Azure-Momentaufnahmen verwendet, um nahezu sofortige Sicherungen und schnellere Wiederherstellungen für Datenbankdateien zu ermöglichen, die mit Azure Blob Storage gespeichert wurden. Sicherungs- und Wiederherstellungsrichtlinien lassen sich dank dieser Funktion vereinfachen. Weitere Informationen zum Speichern von Datenbankdateien mithilfe von Azure Blob Storage finden Sie unter SQL Server-Datendateien in Microsoft Azure.

Diagramm zur Erläuterung der Architektur der Momentaufnahmesicherungen.

Verfügen Sie bereits über ein Azure-Konto? Gehen Sie zum Starten eines virtuellen Computers, auf dem SQL Server bereits installiert ist, auf SQL Server auf virtuellen Azure-VMs.

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

Was ist eine SQL Server-Dateimomentaufnahme-Sicherung?

Eine Dateimomentaufnahme-Sicherung besteht aus einem Satz von Azure-Momentaufnahmen der BLOBs, die die Datenbankdateien enthalten, und einer Sicherungsdatei mit Zeigern auf diese Dateimomentaufnahmen. Jede Dateimomentaufnahme wird im Container mit dem Basis-BLOB gespeichert. Sie können angeben, dass die Sicherungsdatei selbst über URL, auf Datenträger oder auf Band geschrieben wird. Sicherung über URL wird empfohlen. Weitere Informationen zur Sicherung finden Sie unter BACKUP und zur Sicherung über URLs unter SQL Server-Sicherung über URLs.

Diagramm der Architektur des Momentaufnahmefeatures.

Durch das Löschen des Basis-BLOBs wird der Sicherungssatz ungültig, und Sie werden daran gehindert, ein BLOB zu löschen, das Dateimomentaufnahmen enthält (es sei denn, Sie entscheiden ausdrücklich, ein BLOB mit allen zugehörigen Dateimomentaufnahmen zu löschen). Durch Löschen einer Datenbank oder einer Datei wird zudem weder das Basis-BLOB noch eine seiner Dateimomentaufnahmen gelöscht. Darüber hinaus werden durch das Löschen der Sicherungsdatei keine Dateimomentaufnahmen aus dem Sicherungssatz gelöscht. Verwenden Sie zum Löschen eines Sicherungssatzes einer Dateimomentaufnahme die gespeicherte Systemprozedur sys.sp_delete_backup.

Vollständige Datenbanksicherung: Durch eine vollständige Datenbanksicherung mithilfe einer Sicherung einer Dateimomentaufnahme wird eine Azure-Momentaufnahme aller Daten- und Protokolldateien der Datenbank erstellt, die Sicherungskette von Transaktionsprotokollen erzeugt und der Speicherort der Dateimomentaufnahmen in die Sicherungsdatei geschrieben.

Transaktionsprotokollsicherung: Durch Ausführen einer Transaktionsprotokollsicherung mithilfe einer Sicherung einer Dateimomentaufnahme wird eine Dateimomentaufnahme der einzelnen Datenbankdateien (nicht nur das Transaktionsprotokoll) erstellt. Es werden die Informationen zum Speicherort der Dateimomentaufnahme in der Sicherungsdatei aufgezeichnet, und die Transaktionsprotokolldatei wird abgeschnitten.

Wichtig

Nach der ersten vollständigen Sicherung, die zum Einrichten der Transaktionsprotokoll-Sicherungskette (die eine Dateimomentaufnahme-Sicherung sein kann) erforderlich ist, brauchen nur noch Sicherungen des Transaktionsprotokolls ausgeführt werden, da jeder Dateimomentaufnahme-Sicherungssatz des Transaktionsprotokolls die Dateimomentaufnahmen aller Datenbankdateien enthält und verwendet werden kann, um eine Datenbank- oder Protokollwiederherstellung durchzuführen. Nach der ersten vollständigen Datenbanksicherung müssen Sie keine zusätzlichen vollständigen oder differenziellen Sicherungen mehr ausführen, weil Azure Blob Storage die Unterschiede zwischen den einzelnen Dateimomentaufnahmen und dem aktuellen Zustand des Basisblobs für jede Datenbankdatei verwaltet.

Hinweis

Ein Tutorial zur Verwendung von SQL Server mit Microsoft Azure Blob Storage finden Sie unter Tutorial: Verwenden von Microsoft Azure Blob Storage mit SQL Server-Datenbanken

Wiederherstellung mithilfe von Dateimomentaufnahme-Sicherungen

Da jeder Dateimomentaufnahme-Sicherungssatz eine Dateimomentaufnahme jeder einzelnen Datenbankdatei enthält, erfordert ein Wiederherstellungsvorgang höchstens zwei aufeinander folgende Dateimomentaufnahme-Sicherungssätze. Dies gilt unabhängig davon, ob der Sicherungssatz aus einer vollständigen Sicherung oder einer Protokollsicherung stammt. Dies unterscheidet sich wesentlich vom Wiederherstellungsvorgang unter Verwendung herkömmlicher Streamingsicherungsdateien. Bei der herkömmlichen Streamingsicherung ist für den Wiederherstellungsvorgang eine vollständige Kette von Sicherungssätzen erforderlich: die vollständige Sicherung, eine differenzielle Sicherung und eine oder mehrere Transaktionsprotokollsicherungen. Der Wiederherstellungsteil Wiederherstellungsvorgangs ist identisch, unabhängig davon, ob von der Wiederherstellung ein Dateimomentaufnahme-Sicherungs- oder ein Streamingsicherungssatz verwendet wird.

Auf den Zeitpunkt eines beliebigen Sicherungssatzes: Um einen RESTORE DATABASE-Vorgang zum Wiederherstellen einer Datenbank auf den Zeitpunkt einer bestimmten Dateimomentaufnahme-Sicherungssatzes auszuführen, werden nur der entsprechende Sicherungssatz und des Basis-Blobs selbst benötigt. Da Sie einen Dateimomentaufnahme-Sicherungssatz des Transaktionsprotokolls verwenden können, um einen RESTORE DATABASE-Vorgang auszuführen, verwenden Sie zum Ausführen dieser Art von RESTORE DATABASE-Vorgang in der Regel einen Sicherungssatz des Transaktionsprotokolls und selten einen vollständigen Sicherungssatz der Datenbank. Ein Beispiel am Ende dieses Artikels veranschaulicht dieses Verfahren.

Auf einen bestimmten Zeitpunkt zwischen zwei Dateimomentaufnahme-Sicherungssätzen: Um einen RESTORE DATABASE-Vorgang auszuführen, der eine Datenbank auf einen bestimmten Zeitpunkt zwischen zwei aufeinander folgenden Transaktionsprotokoll-Sicherungssätzen wiederherstellt, werden nur zwei Transaktionsprotokoll-Sicherungssätze benötigt: ein Sicherungssatz vor und ein Sicherungssatz nach dem Zeitpunkt, auf den Sie die Datenbank wiederherstellen möchten. Um dies zu erreichen, führen Sie einen RESTORE DATABASE-Vorgang WITH NORECOVERY mithilfe des Dateimomentaufnahme-Sicherungssatzes des Transaktionsprotokolls des früheren Zeitpunkts sowie einen RESTORE LOG-Vorgang WITH RECOVERY mithilfe des Dateimomentaufnahme-Sicherungssatzes des Transaktionsprotokolls des späteren Zeitpunkt aus und verwenden das STOPAT-Argument, um den Zeitpunkt anzugeben, an dem die Wiederherstellung aus der Transaktionsprotokollsicherung angehalten werden soll. Ein Beispiel am Ende dieses Artikels veranschaulicht dieses Verfahren.

Wartung eines Dateimomentaufnahme-Sicherungssatzes

Löschen eines Sicherungssatzes einer Dateimomentaufnahme: Ein Sicherungssatz einer Dateimomentaufnahme kann nicht mit dem FORMAT-Argument überschrieben werden. Das Argument FORMAT ist nicht zulässig, um zu vermeiden, dass Dateimomentaufnahmen, die mit der ursprünglichen Dateimomentaufnahme-Sicherung erstellt wurden, verwaist zurückbleiben. Verwenden Sie zum Löschen eines Sicherungssatzes einer Dateimomentaufnahme die gespeicherte Systemprozedur sys.sp_delete_backup. Diese gespeicherte Prozedur löscht die Sicherungsdatei und die Dateimomentaufnahmen, die den Sicherungssatz bilden. Bei Verwendung einer anderen Methode zum Löschen eines Dateimomentaufnahme-Sicherungssatzes kann die Sicherungsdatei gelöscht werden, ohne dass die Dateimomentaufnahmen im Sicherungssatz gelöscht werden.

Löschen verwaister Sicherungsdatei-Momentaufnahmen: Eventuell sind verwaiste Dateimomentaufnahmen vorhanden, wenn die Sicherungsdatei nicht mit der gespeicherten Systemprozedur sys.sp_delete_backup gelöscht wurde, oder wenn eine Datenbank oder Datenbankdatei getrennt wurde, während einem oder mehreren Blobs, in denen die Datenbank bzw. Datenbankdatei vorhanden war, Sicherungsdatei-Momentaufnahmen zugeordnet waren. Um mögliche verwaiste Dateimomentaufnahmen zu suchen, verwenden Sie die Systemfunktion sys.fn_db_backup_file_snapshots zum Auflisten aller Dateimomentaufnahmen der Datenbankdateien. Um die Dateimomentaufnahmen zu suchen, die Teil eines bestimmten Dateimomentaufnahme-Sicherungssatzes sind, verwenden Sie die gespeicherte Systemprozedur RESTORE FILELISTONLY. Anschließend können Sie mit der gespeicherten Systemprozedur sys.sp_delete_backup_file_snapshot einzelne verwaiste Momentaufnahmen von Sicherungsdateien löschen. Beispiele für die Verwendung dieser Systemfunktion und dieser gespeicherten Systemprozeduren finden Sie am Ende dieses Artikels. Weitere Informationen finden Sie unter sp_delete_backup, sys.fn_db_backup_file_snapshots, sp_delete_backup_file_snapshot und RESTORE FILELISTONLY.

Überlegungen und Einschränkungen

Storage Premium: Bei Verwendung von Storage Premium gelten die folgenden Einschränkungen:

Einzelnes Speicherkonto: Dateimomentaufnahme- und Zielblobs müssen dasselbe Speicherkonto verwenden.

Massenprotokolliertes Wiederherstellungsmodell: Bei Verwendung des massenprotokollierten Wiederherstellungsmodus und bei der Arbeit mit einer Transaktionsprotokollsicherung mit minimal protokollierten Transaktionen können Sie keine Protokollwiederherstellung (einschließlich Zeitpunktwiederherstellung) mithilfe der Transaktionsprotokollsicherung ausführen. Führen Sie stattdessen eine Wiederherstellung der Datenbank auf den Zeitpunkt des Dateimomentaufnahme-Sicherungssatzes aus. Diese Einschränkung entspricht der Einschränkung bei Streamingsicherungen.

Onlinewiederherstellung: Bei Sicherungen von Dateimomentaufnahmen ist keine Onlinewiederherstellung möglich. Weitere Informationen zur Onlinewiederherstellung finden Sie unter Onlinewiederherstellung (SQL Server).

Abrechnung: Bei Verwendung von SQL Server-Dateimomentaufnahme-Sicherungen fallen zusätzliche Gebühren an, wenn sich Daten ändern. Weitere Informationen finden Sie unter Grundlegendes zur Ermittlung der Gebühren für Momentaufnahmen.

Archivierung: Sie können Dateimomentaufnahme-Sicherungen in einem Blob-Speicher oder einer Streamingsicherung archivieren. Kopieren Sie zum Archivieren in einem Blob-Speicher die Momentaufnahmen im Dateimomentaufnahme-Sicherungssatz in getrennte Blobs. Zum Archivieren in eine Streamingsicherung stellen Sie die Dateimomentaufnahme-Sicherung als neue Datenbank wieder her, und führen Sie dann eine normale Streamingsicherung mit Komprimierung und/oder Verschlüsselung durch, und archivieren Sie diese für die gewünschte Dauer, unabhängig von den Basis-BLOBs.

Wichtig

Beim Verwalten mehrerer Dateimomentaufnahme-Sicherungen fällt nur ein geringer Leistungsmehraufwand an. Allerdings kann eine übermäßige Anzahl von Dateimomentaufnahme-Sicherungen die E/A-Leistung für die Datenbank beeinträchtigen. Wir empfehlen, nur die Dateimomentaufnahme-Sicherungen aufbewahren, die zur Unterstützung Ihres Ziels hinsichtlich der Wiederherstellungspunkte erforderlich sind.

Sichern von Datenbank und Protokoll mithilfe einer Sicherung einer Dateimomentaufnahme

Im diesem Beispiel wird die AdventureWorks2022-Beispieldatenbank mithilfe einer Dateimomentaufnahme-Sicherung über URL gesichert.

-- To permit log backups, before the full database backup, modify the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE AdventureWorks2022  
   SET RECOVERY FULL;  
GO  
-- Back up the full AdventureWorks2022 database.  
BACKUP DATABASE AdventureWorks2022   
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak'   
WITH FILE_SNAPSHOT;  
GO  
-- Back up the AdventureWorks2022 log using a time stamp in the backup file name.  
DECLARE @Log_Filename AS VARCHAR (300);  
SET @Log_Filename = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_Log_'+   
REPLACE (REPLACE (REPLACE (CONVERT (VARCHAR (40), GETDATE (), 120), '-','_'),':', '_'),' ', '_') + '.trn';  
BACKUP LOG AdventureWorks2022  
 TO URL = @Log_Filename WITH FILE_SNAPSHOT;  
GO  

Wiederherstellen aus einer auf SQL Server-Sicherung einer Dateimomentaufnahme

Im folgende Beispiel wird die AdventureWorks2022-Datenbank unter Verwendung eines Dateimomentaufnahme-Sicherungssatzes des Transaktionsprotokolls wiederhergestellt und ein Wiederherstellungsvorgang veranschaulicht. Beachten Sie, dass Sie eine Datenbank aus einem einzigen Dateimomentaufnahme -Sicherungssatzes des Transaktionsprotokolls wiederherstellen können.

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

Zeitpunktbezogenes Wiederherstellen einer SQL Server-Sicherung von Dateimomentaufnahmen

Im folgende Beispiel wird die AdventureWorks2022-Datenbank unter Verwendung von zwei Dateimomentaufnahme-Sicherungssätzen des Transaktionsprotokolls in den Zustand zu einem bestimmten Zeitpunkt wiederhergestellt und ein Wiederherstellungsvorgang veranschaulicht.

RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_16_00_00.trn'   
WITH NORECOVERY,REPLACE;  
GO   
  
RESTORE LOG AdventureWorks2022 FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_18_00_00.trn'   
WITH RECOVERY,STOPAT = 'May 18, 2015 5:35 PM';  
GO  

Löschen eines auf einer Datenbankdatei basierenden Momentaufnahmesicherung

Verwenden Sie zum Löschen eines Sicherungssatzes einer Dateimomentaufnahme die gespeicherte Systemprozedur sys.sp_delete_backup. Geben Sie den Datenbanknamen an, damit das System prüft, ob die angegebene Momentaufnahmesicherung tatsächlich eine Sicherung für die angegebene Datenbank ist. Wenn kein Datenbankname angegeben ist, wird der angegebene Sicherungssatz mit seinen Dateimomentaufnahmen ohne eine solche Überprüfung gelöscht. Weitere Informationen finden Sie unter sp_delete_backup.

Warnung

Beim Versuch, einen Dateimomentaufnahmen-Sicherungssatz mit einer anderen Methode zu löschen, z. B. dem Microsoft Azure-Verwaltungsportal oder dem Azure-Speicher-Viewer in SQL Server Management Studio, werden die Dateimomentaufnahmen im Sicherungssatz nicht gelöscht. Durch diese Tools wird nur die Sicherungsdatei gelöscht, die die Zeiger auf die Dateimomentaufnahmen im Dateimomentaufnahme-Sicherungssatz enthält. Um die Momentaufnahmen von Sicherungsdateien zu suchen, die übrig bleiben, wenn eine Sicherungsdatei nicht ordnungsgemäß gelöscht wurde, verwenden Sie die Systemfunktion sys.fn_db_backup_file_snapshots und dann die gespeicherte Systemprozedur sys.sp_delete_backup_file_snapshot, um einzelne Momentaufnahmen einer Sicherungsdatei zu löschen.

Das folgende Beispiel löscht den angegebenen Dateimomentaufnahme-Sicherungssatz, einschließlich der Sicherungsdatei und der Dateimomentaufnahmen, die den angegebenen Sicherungssatz bilden.

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

Anzeigen von Momentaufnahmen von Datenbanksicherungsdateien

Verwenden Sie zum Anzeigen der Dateimomentaufnahmen des Basisblobs für jede Datenbankdatei die Systemfunktion sys.fn_db_backup_file_snapshots. Mit dieser Systemfunktion können Sie alle Sicherungsdatei-Momentaufnahmen der einzelnen Basisblobs für eine Datenbank anzeigen, die über Azure Blob Storage gespeichert wurden. Ein primärer Anwendungsfall für diese Funktion ist das Ermitteln von Sicherungsdatei-Momentaufnahmen einer Datenbank, die zurückbleiben, wenn die Sicherungsdatei für einen Sicherungssatz von Dateimomentaufnahmen mit einem anderen Mechanismus als der gespeicherten Systemprozedur sys.sp_delete_backup gelöscht wird. Verwenden Sie die gespeicherte Systemprozedur RESTORE FILELISTONLY, um zu ermitteln, welche Sicherungsdatei-Momentaufnahmen Teil von intakten und welche Teil von nicht intakten Sicherungssätzen sind. Die Systemprozedur listet die Datei-Momentaufnahmen für jede Sicherungsdatei auf. Weitere Informationen finden Sie unter sys.fn_db_backup_file_snapshots und RESTORE FILELISTONLY.

Das folgende Beispiel gibt die Liste aller Sicherungsdatei-Momentaufnahmen für die angegebene Datenbank zurück.

--Either specify the database name or set the database context  
USE AdventureWorks2022  
select * from sys.fn_db_backup_file_snapshots (null) ;  
GO  
select * from sys.fn_db_backup_file_snapshots ('AdventureWorks2022') ;  
GO  

Löschen einer Momentaufnahme einer einzelnen Datenbanksicherungsdatei

Mit der gespeicherten Systemprozedur sys.sp_delete_backup_file_snapshot können Sie eine Momentaufnahme einer einzelnen Sicherungsdatei eines Basisblobs einer Datenbank löschen. Eine primäre Anwendungsfall für diese gespeicherte Systemprozedur besteht darin, Momentaufnahmedateien von verwaisten Dateien zu löschen, die nach dem Löschen einer Sicherungsdatei unter Verwendung einer anderen Methode als der gespeicherten Systemprozedur sys.sp_delete_backup zurückbleiben. Weitere Informationen finden Sie unter sp_delete_backup_file_snapshot.

Warnung

Wird eine einzelne Dateimomentaufnahme gelöscht, die Bestandteil eines Dateimomentaufnahme-Sicherungssatzes ist, wird der Sicherungssatz ungültig.

Das folgende Beispiel löscht die angegebene Sicherungsdatei-Momentaufnahme. Die URL für die angegebene Sicherung wurde mithilfe der Systemfunktion sys.fn_db_backup_file_snapshots abgerufen.

EXEC sys.sp_delete_backup_file_snapshot N'AdventureWorks2022', N'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022Data.mdf?snapshot=2015-05-29T21:31:31.6502195Z';  
GO  

Nächste Schritte