Backups de snapshot de ficheiros para ficheiros de base de dados no Azure

Aplica-se a:SQL Server

O backup de snapshots de ficheiros do SQL Server utiliza snapshots do Azure para fornecer backups quase instantâneos (e restaurações mais rápidas) de ficheiros de base de dados armazenados no Armazenamento de Blobs do Azure. Use backups de snapshot de ficheiros para simplificar as suas políticas de backup e restauro.

Para mais informações sobre como armazenar ficheiros de base de dados no Armazenamento de Blobs do Azure, consulte ficheiros de dados do SQL Server no Microsoft Azure.

Diagrama que explica a arquitetura de backup por snapshot.

Já tem uma conta Azure? Visite o SQL Server nas Máquinas Virtuais do Azure para criar uma máquina virtual que tenha o SQL Server pré-instalado.

Utilize as snapshots do Azure para criar cópias de segurança dos ficheiros de base de dados armazenados no Azure.

O que é uma cópia de segurança em snapshot de ficheiros no SQL Server?

Um backup de snapshots de ficheiros é um conjunto de snapshots Azure dos blobs que contêm os ficheiros da base de dados, mais um ficheiro de backup com ponteiros para esses snapshots. Cada snapshot de ficheiro reside no contentor com o blob base.

Podes escrever o ficheiro de backup em URL, disco ou fita, mas deves fazer backup para URL sempre que possível. Para mais informações, veja BACKUP e SQL Server backup para URL para Armazenamento de Blobs do Azure.

Diagrama da arquitetura da funcionalidade snapshot.

Eliminar o blob base invalida o conjunto de backup. Não podes deixar cair um blob que contenha snapshots de ficheiros a menos que escolhas explicitamente eliminar o blob juntamente com todos os seus snapshots de ficheiro. Eliminar uma base de dados ou um ficheiro de dados não apaga o blob base nem nenhum dos seus snapshots de ficheiros, e eliminar o ficheiro de backup não apaga nenhum dos snapshots do conjunto de backup. Para eliminar um conjunto de backup de instantâneos de ficheiro, utilize o sys.sp_delete_backup procedimento armazenado do sistema.

Backup completo da base de dados: Um backup completo de snapshot de ficheiro faz um snapshot Azure de cada ficheiro de dados e logs na base de dados, estabelece a cadeia de backup de registo de transações e escreve as localizações dos snapshots de ficheiro no ficheiro de backup.

Backup do registo de transações: Um backup de registo de registo de transações-snapshot de ficheiros faz um snapshot de cada ficheiro da base de dados (não apenas o registo de transações), regista as localizações do snapshot no ficheiro de backup e trunca o registo de transações.

Importante

Após o backup inicial completo que estabelece a cadeia de backup dos registos de transações (que pode ser por si só uma cópia de segurança snapshot de ficheiros), só precisas de backups dos registos de transações. Cada conjunto de backup de registo de transações contém instantâneos de cada ficheiro de base de dados, por isso pode usá-lo tanto para uma restauração de base de dados como para uma restauração de registos. Não precisas de backups completos ou diferenciais extra porque o Armazenamento de Blobs do Azure trata das diferenças entre cada snapshot de ficheiro e o estado atual do blob base.

Para um tutorial sobre como usar SQL Server com Armazenamento de Blobs do Azure, veja Tutorial: Use Armazenamento de Blobs do Azure com SQL Server.

Restauração usando backups de snapshots de ficheiros

Cada conjunto de backup de snapshot de ficheiro contém um snapshot de cada ficheiro de base de dados, pelo que uma restauração requer no máximo dois conjuntos de backup de snapshots de ficheiro adjacentes. Este requisito é válido quer o conjunto de backup provenha de uma cópia de segurança completa da base de dados ou de uma cópia de segurança de registos. Com o backup tradicional em streaming, o processo de restauro necessita do backup completo, um backup diferencial e um ou mais backups do log de transações. O passo de recuperação é o mesmo para ambas as abordagens.

Até ao momento de qualquer conjunto de backup: Para restaurar uma base de dados no tempo de um conjunto específico de backup snapshot, RESTORE DATABASE é necessário apenas esse conjunto de backup e os blobs base. Como RESTORE DATABASE funciona com um conjunto de backup de registo de transações e snapshots de ficheiros, normalmente utiliza-se um conjunto de backup de registo de transações e raramente um conjunto completo de backup de base de dados. Consulte o exemplo adiante neste artigo.

Para um ponto no tempo entre dois conjuntos de backup de snapshots de ficheiros: Para restaurar uma base de dados a um ponto específico no tempo entre dois conjuntos de backup de registos de transações adjacentes, RESTORE DATABASE são necessários apenas dois conjuntos de backup de registos de transações: um de antes do momento em que se quer restaurar a base de dados, e outro depois. Executa RESTORE DATABASE ... WITH NORECOVERY usando o conjunto de backup anterior, e depois corre RESTORE LOG ... WITH RECOVERY com o posterior. Use o STOPAT argumento para especificar o momento em que deve parar a recuperação do backup do registo de transações. Consulte o exemplo adiante neste artigo.

Manutenção do conjunto de backup de ficheiros

Eliminar um conjunto de backup de snapshot de ficheiro: Não podes sobrescrever um conjunto de backup snapshot de ficheiro com este FORMAT argumento. O FORMAT argumento não é permitido porque pode deixar snapshots órfãos do backup original do ficheiro. Para eliminar um conjunto de backup, use o sys.sp_delete_backup procedimento armazenado do sistema. Remove o ficheiro de backup e todos os snapshots do conjunto. Outros métodos de eliminação podem remover o ficheiro de backup mas deixar os snapshots do ficheiro para trás.

Eliminar snapshots de ficheiros de backup órfãos: Pode acabar com snapshots de ficheiros órfãos se apagar o ficheiro de backup sem sys.sp_delete_backup, ou se eliminar uma base de dados ou ficheiro de dados enquanto os seus blobs ainda têm snapshots de ficheiros de backup associados. Para encontrar candidatos, use a sys.fn_db_backup_file_snapshots função de sistema para listar todos os snapshots de ficheiros dos ficheiros da base de dados. Para ver que snapshots de ficheiros pertencem a um conjunto de backup específico, use o RESTORE FILELISTONLY procedimento armazenado do sistema. Depois remove um órfão com o sys.sp_delete_backup_file_snapshot procedimento armazenado do sistema. Veja os exemplos mais adiante neste artigo.

Para obter mais informações, consulte:

Considerações e limitações

Armazenamento premium: Quando utiliza armazenamento premium, aplicam-se as seguintes limitações:

Conta de armazenamento única: O snapshot de ficheiro e os blobs de destino devem usar a mesma conta de armazenamento.

Modelo de recuperação em massa: Se usar o modelo de recuperação em bloco com um backup de registo de transações que contém transações mínimamente registadas, não pode restaurar o registo (incluindo a recuperação pontual no tempo) a partir desse backup. Em vez disso, restaure a base de dados para a data do conjunto de backup de snapshots de ficheiros. A mesma limitação aplica-se ao streaming de backup.

Restauro online: Não pode fazer uma restauração online a partir de um backup de snapshot de ficheiros. Para mais informações sobre restauração online, consulte Online Restore (SQL Server).

Faturação: O backup de snapshot de ficheiros do SQL Server adiciona custos à medida que os dados são alterados. Para obter mais informações, consulte Compreender Como as Instâncias Acumulam Custos.

Arquivamento: Pode arquivar uma cópia de segurança snapshot de ficheiro para Armazenamento de Blobs do Azure ou para backup em streaming. Para Armazenamento de Blobs do Azure, copie os snapshots no conjunto de backup de snapshots de ficheiros em blobs separados. Para backups em streaming, restaure o backup do snapshot de ficheiros como uma nova base de dados e depois faça um backup em streaming regular com compressão e/ou encriptação. Podes manter o arquivo o tempo que quiseres, independente dos blobs base.

Importante

Manter múltiplos backups de snapshots de ficheiros tem apenas uma pequena sobrecarga de desempenho, mas manter demasiados pode afetar o desempenho de I/O na base de dados. Mantém apenas os backups snapshot de ficheiros que precisas para cumprir o objetivo do teu ponto de recuperação.

Faça backup da base de dados e faça o registo usando uma cópia de segurança snapshot de ficheiros

O exemplo seguinte utiliza um backup de snapshot de ficheiro para fazer backup da AdventureWorks2025 base de dados de exemplo para uma 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

Restauração a partir de uma cópia de segurança de snapshot de ficheiros SQL Server

O exemplo seguinte restaura a AdventureWorks2025 base de dados usando um conjunto de backup de registo de transações e snapshot de ficheiros, e mostra uma operação de recuperação. Pode restaurar uma base de dados a partir de um único conjunto de backup de ficheiro de registo de transações.

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

Restaurar a partir de um backup de snapshot de ficheiros SQL Server para um determinado momento

O exemplo seguinte utiliza dois conjuntos de backup de registo de transações para restaurar a AdventureWorks2025 base de dados ao seu estado num determinado momento, e mostra uma operação de recuperação.

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

Eliminar um conjunto de backup de snapshots de ficheiros de base de dados

Para eliminar um conjunto de backup de instantâneos de ficheiro, utilize o sys.sp_delete_backup procedimento armazenado do sistema. Inclua o nome da base de dados para que o procedimento verifique se o conjunto de backup é um backup dessa base de dados. Se omitir o nome da base de dados, o procedimento ignora essa verificação e elimina o conjunto de backup e os seus snapshots de ficheiros. Para mais informações, consulte sp_delete_backup.

Advertência

Se apagar um conjunto de backup de snapshots de ficheiro de outra forma, por exemplo, do portal Azure ou do nó Armazenamento do Azure no Object Explorer do SQL Server Management Studio, os snapshots de ficheiros ficam para trás. Essas ferramentas só removem o ficheiro de backup, que contém os ponteiros para os snapshots dos ficheiros. Para encontrar snapshots de ficheiros remanescentes, use a sys.fn_db_backup_file_snapshots função do sistema e depois elimine cada um com o sys.sp_delete_backup_file_snapshot procedimento armazenado do sistema.

O exemplo seguinte elimina um conjunto de backup de snapshots de ficheiros, incluindo o seu ficheiro de backup e todos os snapshots de ficheiro do conjunto.

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

Ver instantâneos de ficheiros de backup da base de dados

Para listar os snapshots do blob base para cada ficheiro de base de dados, use a sys.fn_db_backup_file_snapshots função do sistema. Podes encontrar snapshots de ficheiros de backup que permanecem quando algo que não sys.sp_delete_backup apaga o ficheiro de backup para um conjunto de backup-snapshot. Para ver quais snapshots de ficheiros pertencem a um conjunto de backup intacto, use RESTORE FILELISTONLY para listar os snapshots de ficheiros que cada ficheiro de backup referencia. Para mais informações, consulte sys.fn_db_backup_file_snapshots e RESTORE Declarações - FILELISTONLY.

O exemplo seguinte lista todos os snapshots de ficheiros de backup para uma base de dados.

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

Eliminar um snapshot individual de ficheiro de backup de base de dados

Para eliminar um snapshot individual de ficheiro de backup de um blob da base da base de dados, use o sys.sp_delete_backup_file_snapshot procedimento armazenado do sistema. Usa-o principalmente para limpar instantâneos de ficheiros órfãos que ficam quando um processo que não sys.sp_delete_backup apaga o ficheiro de backup. Para mais informações, consulte sp_delete_backup_file_snapshot.

Advertência

Eliminar um snapshot individual de ficheiro que pertence a um conjunto de backup de snapshots de ficheiros invalida o conjunto de backup.

O exemplo seguinte elimina um snapshot de ficheiro de backup. Pode obter o URL de 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