File-snapshot backups for database files in Azure

Dotyczy:SQL Server

Kopia zapasowa SQL Server z migawkami plików wykorzystuje migawki Azure, aby zapewnić niemal natychmiastowe kopie zapasowe (i szybsze przywracanie) plików baz danych przechowywanych w Azure Blob Storage. Korzystaj z kopii zapasowych na podstawie migawek plików, aby uprościć swoje polityki tworzenia kopii zapasowych i przywracania.

Więcej informacji o przechowywaniu plików bazy danych w Azure Blob Storage można znaleźć w artykule SQL Server data files in Microsoft Azure.

Diagram wyjaśniający architekturę kopii zapasowej migawki.

Masz już konto platformy Azure? Odwiedź SQL Server on Azure Virtual Machines, aby stworzyć maszynę wirtualną z preinstalowanym SQL Server.

Użyj migawek Azure do tworzenia kopii zapasowych plików bazy danych przechowywanych w Azure

Czym jest kopia zapasowa SQL Server z migawką plików?

Kopia zapasowa migawki pliku to zestaw migawek Azure z blobami zawierającymi pliki bazy danych, plus plik kopii zapasowej ze wskaźnikami do tych migawek plików. Każdy migawka pliku znajduje się w kontenerze z bazowym blobem.

Możesz zapisać plik kopii zapasowej na adres URL, dysk lub taśmę, ale zawsze powinieneś robić kopię zapasową do URL. Więcej informacji znajdziesz w artykule BACKUP i SQL Server backup to URL dla Azure Blob Storage.

Diagram przedstawiający architekturę funkcji migawki.

Usunięcie bazowego bloba unieważnia zestaw zapasowy. Nie możesz usunąć bloba zawierającego migawki plików, chyba że wyraźnie zdecydujesz się usunąć blob wraz ze wszystkimi jego migawkami plików. Usunięcie bazy danych lub pliku danych nie usuwa bazowego blobu ani żadnych migawek plików, a usunięcie pliku kopii zapasowej nie usuwa żadnych migawek plików w zestawie kopii zapasowej. Aby usunąć zestaw kopii zapasowych migawek plików, użyj sys.sp_delete_backup procedury składowanej systemu.

Pełna kopia zapasowa bazy danych: Pełna kopia zapasowa z plikami plików wykonuje snapshot Azure każdego pliku danych i logów w bazie danych, ustanawia łańcuch kopii kopii transakcyjnych i zapisuje lokalizacje snapshotów plików do pliku backup.

Kopia zapasowa dziennika transakcyjnego: Kopia zapasowa pliku z logiem transakcyjnym wykonuje migawkę każdego pliku bazy danych (nie tylko dziennika transakcyjnego), rejestruje lokalizacje migawek pliku w pliku kopii zapasowej i skraca dziennik transakcji.

Ważne

Po początkowej pełnej kopii zapasowej, która ustanawia łańcuch kopii kopii danych transakcyjnych (który sam może być kopią zapasową na podstawie migawki plików), potrzebujesz jedynie kopii zapasowych dzienników transakcyjnych. Każdy zestaw kopii zapasowych plików z logiem transakcyjnym zawiera migawki plików każdego pliku bazy danych, więc możesz go użyć zarówno do przywracania bazy danych, jak i do przywracania logów. Nie potrzebujesz dodatkowych pełnych lub różnicowych kopii zapasowych, ponieważ Azure Blob Storage obsługuje różnice między każdym snapshotem pliku a aktualnym stanem bazowego blobu.

Aby uzyskać poradnik dotyczący obsługi SQL Server z Azure Blob Storage, zobacz Tutorial: Use Azure Blob Storage with SQL Server.

Przywracanie przy użyciu kopii zapasowych migawek plików

Każdy zestaw kopii zapasowych z migawką plików zawiera migawkę pliku każdego pliku bazy danych, więc przywracanie wymaga co najwyżej dwóch sąsiednich zestawów kopii zapasowych plików. Ten wymóg jest prawdziwy niezależnie od tego, czy zestaw kopii zapasowych pochodzi z pełnej kopii bazowej bazy danych, czy z logów. W tradycyjnym strumieniowym backupie proces przywracania wymaga pełnej kopii zapasowej, różnicowej kopii zapasowej oraz jednej lub więcej kopii rejestrów transakcyjnych. Etap powrotu do zdrowia jest taki sam dla obu podejść.

Do czasu dowolnego zestawu kopii zapasowej: Aby przywrócić bazę danych do czasu konkretnego zestawu RESTORE DATABASE plików snapshot, potrzebny jest tylko ten zestaw kopii zapasowych oraz bazowe bloby. Ponieważ RESTORE DATABASE działa z zestawem kopii zapasowych z plikami z plikami transakcyjnych, zazwyczaj używa się zestawu kopii kopii zapasowych dziennika transakcyjnego i rzadko pełnego zestawu kopii zapasowych bazy danych. Zobacz przykład w późniejszej części tego artykułu.

Do punktu pomiędzy dwoma zestawami kopii zapasowych migawek plików: Aby przywrócić bazę danych do określonego punktu pomiędzy dwoma sąsiadującymi zestawami kopii zapasowych dzienników transakcyjnych, potrzebne są tylko dwa zestawy kopii zapasowych dzienników transakcyjnych: RESTORE DATABASE jeden sprzed punktu w czasie, do którego chcesz przywrócić bazę danych, i jeden z po. Uruchom RESTORE DATABASE ... WITH NORECOVERY z wcześniejszego zestawu zapasowego, a potem RESTORE LOG ... WITH RECOVERY z późniejszym. Użyj argumentu STOPAT , aby określić moment w czasie, w którym zatrzymać odzyskiwanie z kopii zapasowej dziennika transakcji. Zobacz przykład w późniejszej części tego artykułu.

Konserwacja zestawu kopii zapasowych plików

Usuwanie zestawu kopii zapasowych z migawką pliku: Nie można nadpisać zestawu kopii zapasowych z plikami za pomocą FORMAT argumentu. Argument ten FORMAT nie jest dozwolony, ponieważ może osierocić migawki plików z oryginalnej kopii zapasowej pliku. Aby usunąć zestaw kopii zapasowych, użyj procedury sys.sp_delete_backup systemowej przechowywanej. Usuwa plik kopii zapasowej oraz wszystkie migawki z zestawu. Inne metody usuwania mogą usuwać plik kopii zapasowej, ale pozostawiać migawki plików.

Usuwanie osieroconych migawek plików kopii zapasowej: Możesz skończyć z osieroczonymi migawkami plików, jeśli usuniesz plik kopii zapasowej bez sys.sp_delete_backup, albo jeśli upuścisz bazę danych lub plik danych, gdy jego pliki mają jeszcze powiązane snapshoty z kopią zapasową. Aby znaleźć kandydatów, użyj funkcji systemowej sys.fn_db_backup_file_snapshots , aby wypisać każdy migawkę pliku z plików bazy danych. Aby zobaczyć, które migawki plików należą do konkretnego zestawu kopii zapasowych, użyj procedury RESTORE FILELISTONLY systemowej przechowywanej. Następnie usuń sierotę z procedurą sys.sp_delete_backup_file_snapshot systemu przechowywaną. Zobacz przykłady później w tym artykule.

Aby uzyskać więcej informacji, zobacz:

Uwagi i ograniczenia

Przechowywanie premium: Gdy korzystasz z pamięci premium, obowiązują następujące ograniczenia:

Jedno konto pamięci: Plik-snapshot i docelowe bloby muszą korzystać z tego samego konta pamięci.

Model odzyskiwania masowego: Jeśli używasz modelu odzyskiwania z logowaniem masowym z kopią zapasową logów transakcyjnych, która zawiera minimalnie zarejestrowane transakcje, nie możesz przywrócić tego logu (w tym odzyskiwania w czasie rzeczywistym) z tej kopii zapasowej. Zamiast tego przywróć bazę danych do czasu zestawu kopii zapasowej migawki pliku. To samo ograniczenie dotyczy backupu streamingowego.

Przywracanie online: Nie możesz wykonać przywracania online z kopii zapasowej z pliku migawkowego. Aby uzyskać więcej informacji na temat przywracania w trybie online, zobacz Przywracanie w trybie online (SQL Server).

Rozliczenia: Kopia zapasowa SQL Server z migawką plików dodaje opłaty wraz ze zmianą danych. Aby uzyskać więcej informacji, zobacz Opis sposobu naliczania opłat za migawki.

Archiwalne: Możesz zarchiwizować kopię zapasową migawki pliku do Azure Blob Storage lub do kopii strumieniowej. W przypadku Azure Blob Storage skopiuj migawki z zestawu kopii zapasowej plików do osobnych blobów. Do tworzenia kopii zapasowej streamingowej przywróć kopię plikową jako nową bazę danych, a następnie wykonaj zwykłą kopię zapasową streamingową z kompresją i/lub szyfrowaniem. Możesz przechowywać archiwum tak długo, jak chcesz, niezależnie od bazowych blobów.

Ważne

Utrzymywanie wielu kopii zapasowych migawek plików wiąże się z niewielkim obciążeniem wydajnościowym, ale utrzymywanie zbyt wielu plików może wpłynąć na wydajność I/O w bazie danych. Zachowaj tylko te kopie zapasowe z plikami migawkowymi, które są potrzebne do osiągnięcia celu punktu odzyskania.

Twórz kopię zapasową bazy danych i dzienników, używając migawkowej kopii zapasowej plików.

Poniższy przykład wykorzystuje kopię zapasową z migawki pliku do wykonania kopii zapasowej przykładowej bazy AdventureWorks2025 danych do adresu URL.

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

Przywracanie z kopii zapasowej migawki plików programu SQL Server

Poniższy przykład przywraca bazę AdventureWorks2025 danych za pomocą zestawu kopii zapasowych z plikiem transakcyjnych i pokazuje operację odzyskiwania. Możesz przywrócić bazę danych z pojedynczego zestawu kopii zapasowych z plikiem dziennika transakcyjnego.

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

Przywracanie z kopii zapasowej migawki plików programu SQL Server do punktu w czasie

Poniższy przykład wykorzystuje dwa zestawy kopii zapasowych plików z dziennika transakcyjnego do przywrócenia bazy danych AdventureWorks2025 do określonego stanu w określonym momencie i pokazuje operację odzyskiwania.

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

Usuwanie zestawu kopii zapasowych migawek plików bazy danych

Aby usunąć zestaw kopii zapasowych migawek plików, użyj sys.sp_delete_backup procedury składowanej systemu. Uwzględnij nazwę bazy danych, aby procedura weryfikowała, czy zestaw kopii zapasowych jest kopią zapasową tej bazy. Jeśli pominiesz nazwę bazy danych, procedura pomija to sprawdzenie i usuwa zestaw kopii zapasowych oraz jego migawki plików. Aby uzyskać więcej informacji, zobacz sp_delete_backup.

Ostrzeżenie

Jeśli usuniesz kopię zapasową snapshotów ustawioną inaczej, na przykład z portalu Azure lub węzła Azure Storage w Eksplorator obiektów SQL Server Management Studio, migawki plików pozostają w tyle. Te narzędzia usuwają tylko plik kopii zapasowej, który zawiera wskaźniki do migawek plików. Aby znaleźć pozostałe migawki plików, użyj funkcji systemowej sys.fn_db_backup_file_snapshots , a następnie usuń każdą z nich procedurą sys.sp_delete_backup_file_snapshot systemowego przechowywania.

Poniższy przykład usuwa zestaw kopii zapasowych migawek plików, w tym jego plik kopii zapasowej oraz każdy migawkę pliku w zestawie.

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

Zobacz migawki plików kopii zapasowej bazy danych

Aby wypisać migawki pliku bazowego blobu dla każdego pliku bazy, użyj sys.fn_db_backup_file_snapshots funkcji systemowej. Możesz znaleźć snapshoty plików backup, które pozostają nawet wtedy, gdy coś nie sys.sp_delete_backup usuwa pliku backupu w zestawie snapshotów plików. Aby zobaczyć, które migawki plików należą do nienaruszonego zestawu kopii zapasowych, użyj RESTORE FILELISTONLY do wypisania migawek plików, do których odwołuje się każdy plik kopii zapasowej. Więcej informacji można znaleźć w sys.fn_db_backup_file_snapshots i OświadczeniachRESTORE - FILELISTONLY.

Poniższy przykład przedstawia każdą migawkę pliku kopii zapasowej dla bazy danych.

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

Usuń pojedynczy snapshot pliku kopii zapasowej bazy danych

Aby usunąć pojedynczy snapshot pliku kopii zapasowej bazy danych, użyj procedury systemowej przechowywanej sys.sp_delete_backup_file_snapshot . Używam go głównie do usuwania osieroconych migawek plików, które pozostają, gdy jakiś inny sys.sp_delete_backup proces usuwa plik kopii zapasowej. Aby uzyskać więcej informacji, zobacz sp_delete_backup_file_snapshot.

Ostrzeżenie

Usunięcie pojedynczego snapshotu pliku, który należy do zestawu kopii zapasowej snapshotów, unieważnia ten zestaw backup.

Poniższy przykład usuwa snapshot pliku kopii zapasowej. URL można pobrać z 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