Delen via


File-Snapshot back-ups voor databasebestanden in Azure

Van toepassing op:SQL Server

** Bestand-snapshot back-ups van SQL Server maken gebruik van Azure-momentopnamen om bijna onmiddellijke back-ups en snellere herstelbewerkingen te bieden voor databasebestanden die zijn opgeslagen met Azure Blob Storage. Met deze mogelijkheid kunt u uw back-up- en herstelbeleid vereenvoudigen. Zie SQL Server-gegevensbestanden in Microsoft Azure voor meer informatie over het opslaan van databasebestanden met behulp van Azure Blob Storage.

Diagram waarin de back-uparchitectuur voor momentopnamen wordt uitgelegd.

Hebt u al een Azure-account? Ga naar SQL Server op Azure Virtual Machines om een virtuele machine te maken waarop SQL Server al is geïnstalleerd.

Azure-momentopnamen gebruiken om een back-up te maken van databasebestanden die zijn opgeslagen in Azure

Wat is een back-up van sql Server-bestandsmomentopnamen?

Een back-up van een bestandsmomentopname bestaat uit een set Azure-momentopnamen van de blobs die de databasebestanden bevatten plus een back-upbestand met verwijzingen naar deze bestandsmomentopnamen. Elke momentopname van bestanden wordt opgeslagen in de container met de basis-blob. U kunt opgeven dat het back-upbestand zelf naar URL, schijf of tape moet worden geschreven. Back-up naar URL wordt aanbevolen. Zie voor meer informatie over back-up maken BACKUP en voor het back-up maken naar URL SQL Server Backup to URL.

Diagram van de architectuur van de momentopnamefunctie.

Als u de basis-blob verwijdert, wordt de back-upset ongeldig en wordt voorkomen dat u een blob met bestandsmomentopnamen verwijdert (tenzij u er uitdrukkelijk voor kiest om een blob met alle bestandsmomentopnamen te verwijderen). Als u bovendien een database of gegevensbestand verwijdert, worden de basis-blob of een van de bijbehorende momentopnamen van bestanden niet verwijderd. Als u het back-upbestand verwijdert, worden ook geen momentopnamen van bestanden in de back-upset verwijderd. Als u een back-upset voor momentopnamen van bestanden wilt verwijderen, gebruikt u de door het sys.sp_delete_backup systeem opgeslagen procedure.

Volledige databaseback-up: Als u een volledige databaseback-up uitvoert met behulp van een back-up van bestandsmomentopnamen, maakt u een Azure-momentopname van elk gegevens- en logboekbestand dat bestaat uit de database, brengt u de back-upketen van het transactielogboek tot stand en schrijft u de locatie van de bestandsmomentopnamen naar het back-upbestand.

Back-up van transactielogboek: Als u een back-up van een transactielogboek uitvoert met behulp van een bestandsmomentopname-back-up, wordt er een bestandsmomentopname gemaakt van elk databasebestand (niet alleen het transactielogboek), registreert het de locatie-informatie van de bestandsmomentopname in het back-upbestand en verkort het het transactielogboekbestand.

Belangrijk

Na de eerste volledige back-up die nodig is om de back-upketen van het transactielogboek vast te stellen (dit kan een back-up van een momentopname zijn), hoeft u alleen back-ups van transactielogboeken uit te voeren omdat elke back-upset voor transactielogboekbestanden bestandsmomentopnamen van alle databasebestanden bevat en kan worden gebruikt om een databaseherstel of logboekherstel uit te voeren. Na de eerste volledige back-up van de database hebt u geen extra volledige of differentiële back-ups nodig, omdat Azure Blob Storage de verschillen afhandelt tussen elke momentopname van bestanden en de huidige status van de basisblob voor elk databasebestand.

Opmerking

Voor een zelfstudie over het gebruik van SQL Server met Microsoft Azure Blob Storage raadpleegt u zelfstudie: Microsoft Azure Blob Storage gebruiken met SQL Server-databases

Herstellen met back-ups van momentopnamen van bestanden

Omdat elke back-upset voor momentopnamen van bestanden een momentopname van elk databasebestand bevat, vereist een herstelproces maximaal twee back-upsets voor bestandsmomentopnamen. Dit geldt ongeacht of de back-upset afkomstig is van een volledige databaseback-up of een logboekback-up. Dit is heel anders dan het herstelproces wanneer u traditionele streamingback-upbestanden gebruikt om het herstelproces uit te voeren. Bij traditionele streamingback-up vereist het herstelproces het gebruik van een volledige keten van back-upsets: de volledige back-up, een differentiële back-up en een of meer back-ups van transactielogboeken. Het herstelonderdeel van het herstelproces blijft hetzelfde, ongeacht of de herstelbewerking gebruikmaakt van een bestandssnapshot-back-up of een streamingback-upset.

Naar het tijdstip van een back-upset: Als u een HERSTELDATABASE-bewerking wilt uitvoeren om een database te herstellen naar het tijdstip van een specifieke back-upset voor momentopnamen van bestanden, is alleen de specifieke back-upset vereist, plus de basis-blobs zelf. Omdat u een momentopname-backupset van een transactielogbestand kunt gebruiken om een HERSTEL DATABASE-bewerking uit te voeren, gebruikt u doorgaans een back-upset voor transactielogboeken om dit type DATABASE herstelbewerking uit te voeren en zelden een volledige databaseback-upset gebruikt. Aan het einde van dit artikel wordt een voorbeeld weergegeven waarin deze techniek wordt gedemonstreerd.

Naar een bepaald tijdstip tussen twee back-upsets voor momentopnamen van bestanden: Als u een RESTORE DATABASE-bewerking wilt uitvoeren om een database te herstellen naar een bepaald tijdstip tussen de tijd van twee aangrenzende back-upsets voor transactielogboeken, zijn er slechts twee back-ups van transactielogboeken vereist (één voor en één na het tijdstip waarop u de database wilt herstellen). Hiervoor voert u een RESTORE DATABASE-bewerking uit met NORECOVERY, met behulp van de back-upset van het transactionele logboekbestand met momentopname vanaf het eerdere tijdstip. Daarna voert u een RESTORE LOG-bewerking uit met RECOVERY, waarbij u de back-upset van het transactielogboekbestand met momentopname van het latere tijdstip gebruikt en het argument STOPAT om het precieze tijdstip op te geven waarop het herstel vanuit de transactielogboekback-up moet worden gestopt. Aan het einde van dit artikel wordt een voorbeeld weergegeven waarin deze techniek wordt gedemonstreerd.

Onderhoud van back-upset voor bestanden

Een back-upset met momentopnamen verwijderen: U kunt een back-upset voor een momentopname niet overschrijven met behulp van het argument FORMAT. Het argument FORMAT is niet toegestaan om te voorkomen dat er verweesde bestandsmomentopnamen ontstaan die zijn aangemaakt met de oorspronkelijke momentopnamebackup. Als u een back-upset voor momentopnamen van bestanden wilt verwijderen, gebruikt u de door het sys.sp_delete_backup systeem opgeslagen procedure. Met deze opgeslagen procedure worden het back-upbestand en de momentopnamen van bestanden verwijderd die de back-upset vormen. Met een andere methode voor het verwijderen van een back-upset voor momentopnamen van bestanden kan het back-upbestand worden verwijderd zonder de bestandsmomentopnamen in de back-upset te verwijderen.

Verweesde back-upbestandsmomentopnamen verwijderen: Mogelijk hebt u verweesde momentopnamen van bestanden als het back-upbestand is verwijderd zonder gebruik van de sys.sp_delete_backup systeem opgeslagen procedure of als een database of databasebestand is verwijderd terwijl de blob(s) die de database of het databasebestand bevatten, back-upbestandsmomentopnamen eraan gekoppeld hadden. Als u bestandsmomentopnamen wilt identificeren die verweesd kunnen zijn, gebruikt u de sys.fn_db_backup_file_snapshots systeemfunctie om alle bestandsmomentopnamen van de databasebestanden weer te geven. Om de bestands-snapshots te identificeren die deel uitmaken van een specifieke bestands-snapshot back-upset, gebruikt u de systeem opgeslagen procedure RESTORE FILELISTONLY. Vervolgens kunt u de sys.sp_delete_backup_file_snapshot systeemopgeslagen procedure gebruiken om een afzonderlijk back-upbestand te verwijderen dat verweesd is. Voorbeelden van het gebruik van deze systeemfunctie en deze systeem opgeslagen procedures bevinden zich aan het einde van dit artikel. Zie sp_delete_backup, sys.fn_db_backup_file_snapshots, sp_delete_backup_file_snapshot en RESTORE FILELISTONLY voor meer informatie.

Overwegingen en beperkingen

Premium-opslag: Wanneer u Premium Storage gebruikt, gelden de volgende beperkingen:

Eén opslagaccount: De momentopname van bestanden en doelblobs moeten hetzelfde opslagaccount gebruiken.

Model voor bulkherstel: Wanneer u het bulksgewijs vastgelegde herstelmodel gebruikt en werkt met een back-up van een transactielogboek met minimaal vastgelegde transacties, kunt u geen logboekherstel uitvoeren (inclusief herstel naar een bepaald tijdstip) met behulp van de back-up van het transactielogboek. In plaats daarvan voert u een databaseherstel uit naar de tijd van de back-upset voor bestandsmomentopnamen. Deze beperking is identiek aan de beperking met streamingback-up.

Online herstellen: Wanneer u back-ups van momentopnamen van bestanden gebruikt, kunt u geen online herstel uitvoeren. Zie Online herstellen (SQL Server) voor meer informatie over online herstellen.

Facturering: Wanneer u back-ups van SQL Server-bestandsmomentopnamen gebruikt, worden er extra kosten in rekening gebracht wanneer gegevens worden gewijzigd. Zie Inzicht in hoe momentopnamen kosten maken voor meer informatie.

Archivering: Als u een back-up van een momentopname van bestanden wilt archiveren, kunt u archiveren naar blobopslag of naar streamingback-up. Om naar blobopslag te archiveren, kopieert u de snapshots in de back-upset van bestandssnapshots naar afzonderlijke blobs. Als u wilt archiveren naar een streamingback-up, herstelt u de back-up van de momentopname van bestanden als een nieuwe database en voert u vervolgens een normale streamingback-up uit met compressie en/of versleuteling en archiveert u deze zo lang mogelijk, onafhankelijk van de basis-blobs.

Belangrijk

Het onderhouden van back-ups van meerdere momentopnamen van bestanden heeft slechts een kleine overhead voor prestaties. Het onderhouden van een overmatig aantal back-ups van momentopnamen van bestanden kan echter invloed hebben op de I/O-prestaties van de database. U wordt aangeraden alleen de back-ups van bestandsmomentopnamen te onderhouden die nodig zijn om uw herstelpuntdoelstelling te ondersteunen.

Een back-up van de database maken en logboeken maken met behulp van een back-up van een momentopname van een bestand

In dit voorbeeld wordt gebruikgemaakt van een bestands-snapshot-back-up om een back-up te maken van de AdventureWorks2025 voorbeeld-database naar een URL.

-- 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  

Een back-up van een SQL Server-bestandsmomentopname herstellen

In het volgende voorbeeld wordt de AdventureWorks2025 database hersteld met behulp van een back-upset voor back-ups van transactielogboekbestanden en wordt een herstelbewerking weergegeven. Merk op dat u een database kunt herstellen vanuit één snapshot-back-upset van transactionele logboekbestanden.

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

Een back-up van een SQL Server-bestandsmomentopname herstellen naar een specifiek tijdstip

In het volgende voorbeeld wordt de AdventureWorks2025 status hersteld op een opgegeven tijdstip met behulp van twee back-upsets voor back-ups van transactielogboekbestanden en wordt een herstelbewerking weergegeven.

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  

Een back-upset van een momentopname van een databasebestand verwijderen

Als u een back-upset voor momentopnamen van bestanden wilt verwijderen, gebruikt u de door het sys.sp_delete_backup systeem opgeslagen procedure. Geef de naam van de database op om te controleren of de opgegeven back-upset voor momentopnamen van bestanden inderdaad een back-up is voor de opgegeven database. Als er geen databasenaam is opgegeven, wordt de opgegeven back-upset met de bestandsmomentopnamen verwijderd zonder een dergelijke validatie. Zie sp_delete_backup voor meer informatie.

Waarschuwing

Als u probeert een back-upset voor een momentopname te verwijderen met een andere methode, zoals de Microsoft Azure Management Portal of de Azure Storage-viewer in SQL Server Management Studio, worden de bestandsmomentopnamen in de back-upset niet verwijderd. Met deze hulpprogramma's wordt alleen het back-upbestand zelf verwijderd dat de aanwijzers bevat naar de bestandsmomentopnamen in de back-upset voor bestandsmomentopnamen. Als u back-upbestandsmomentopnamen wilt identificeren die achterblijven nadat een back-upbestand onjuist is verwijderd, gebruikt u de sys.fn_db_backup_file_snapshots systeemfunctie en gebruikt u vervolgens de door het sys.sp_delete_backup_file_snapshot systeem opgeslagen procedure om een afzonderlijke back-upbestandsmomentopname te verwijderen.

In het volgende voorbeeld wordt de opgegeven back-upset voor momentopnamen verwijderd, inclusief het back-upbestand en de momentopnamen van bestanden die de opgegeven back-upset omvatten.

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

Snapshots van database-back-upbestanden weergeven

Gebruik de systeemfunctie sys.fn_db_backup_file_snapshots om de momentopnamen van bestanden van de basisblob voor elk databasebestand weer te geven. Met deze systeemfunctie kunt u alle back-upbestandsmomentopnamen van elke basisblob weergeven voor een database die is opgeslagen met behulp van Azure Blob Storage. Een primaire use case voor deze functie is het identificeren van momentopnamen van back-upbestanden van een database die blijven wanneer het back-upbestand voor een bestand-momentopname-set wordt verwijderd met behulp van een ander mechanisme dan de sys.sp_delete_backup systeem-opgeslagen procedure. Als u de back-upbestandsmomentopnamen wilt bepalen die deel uitmaken van intacte back-upsets en de back-upsets die geen deel uitmaken van intacte back-upsets, gebruikt u de door het RESTORE FILELISTONLY systeem opgeslagen procedure om de bestandsmomentopnamen weer te geven die bij elk back-upbestand horen. Zie sys.fn_db_backup_file_snapshots en RESTORE FILELISTONLY voor meer informatie.

In het volgende voorbeeld wordt de lijst met alle back-upbestanden voor de opgegeven database weergegeven.

--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  

Een momentopname van een back-upbestand van een afzonderlijke database verwijderen

Als u een individueel back-upbestand-snapshot van een databaseblob wilt verwijderen, gebruikt u de door het systeem opgeslagen procedure sys.sp_delete_backup_file_snapshot. Een primaire use case voor deze systeemopslagprocedure is het verwijderen van weesbestandssnapshotbestanden die blijven nadat een back-upbestand is verwijderd met een andere methode dan de sys.sp_delete_backup systeemopslagprocedure. Zie sp_delete_backup_file_snapshot voor meer informatie.

Waarschuwing

Als u een afzonderlijke momentopname van bestanden verwijdert die deel uitmaakt van een back-upset voor bestandsmomentopnamen, wordt de back-upset ongeldig gemaakt.

In het volgende voorbeeld wordt de opgegeven momentopname van het back-upbestand verwijderd. De URL voor de opgegeven back-up is verkregen met behulp van de sys.fn_db_backup_file_snapshots systeemfunctie.

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  

Volgende stappen