File-snapshot backups for database files in Azure

적용 대상:SQL Server

SQL Server file-snapshot backup은 Azure 스냅샷을 사용하여 Azure Blob Storage에 저장된 데이터베이스 파일을 거의 즉각적으로 백업(그리고 더 빠른 복원)할 수 있게 합니다. 파일 스냅샷 백업을 사용해 백업 및 복원 정책을 단순화하세요.

Azure Blob Storage에서 데이터베이스 파일 저장에 관한 자세한 내용은 Microsoft Azure의 SQL Server data files를 참조하세요.

스냅샷 백업 아키텍처를 설명하는 다이어그램

Azure 계정이 있나요? Azure Virtual Machines의 SQL Server 방문하여 SQL Server 사전 설치된 가상 머신을 만드세요.

Azure 스냅샷을 사용하여 Azure에 저장된 데이터베이스 파일 백업

SQL Server 파일 스냅샷 백업이란 무엇인가요?

파일 스냅샷 백업은 데이터베이스 파일이 포함된 블롭의 Azure 스냅샷 세트와, 그 파일 스냅샷에 대한 포인터가 있는 백업 파일 세트입니다. 각 파일 스냅샷은 기본 블롭이 포함된 컨테이너에 존재합니다.

백업 파일은 URL, 디스크, 테이프에 쓸 수 있지만, 가능한 한 URL로 백업하는 것이 좋습니다. 자세한 내용은 Azure Blob Storage의 SQL Server backup to URL을 참조하세요BACKUP.

스냅샷 기능의 아키텍처 다이어그램입니다.

기본 블롭을 삭제하면 백업 세트가 무효화됩니다. 파일 스냅샷이 포함된 블롭을 삭제할 수 없으면, 블롭과 그 모든 파일 스냅샷을 명시적으로 삭제하지 않는 한 사용할 수 없습니다. 데이터베이스나 데이터 파일을 삭제해도 기본 블롭이나 그 파일 스냅샷이 삭제되지 않고, 백업 파일을 삭제해도 백업 세트 내 파일 스냅샷도 삭제되지 않습니다. 파일-스냅샷 백업 세트를 삭제하려면 sys.sp_delete_backup 시스템 저장 프로시저를 사용합니다.

전체 데이터베이스 백업: 완전 파일 스냅샷 백업은 데이터베이스 내 각 데이터와 로그 파일의 Azure 스냅샷을 받아 트랜잭션 로그 백업 체인을 설정하고, 파일 스냅샷 위치를 백업 파일에 기록합니다.

트랜잭션 로그 백업: 트랜잭션 로그 파일-스냅샷 백업은 모든 데이터베이스 파일(트랜잭션 로그뿐만 아니라)의 파일 스냅샷을 받아 백업 파일 내 스냅샷 위치를 기록하고, 트랜잭션 로그를 잘라냅니다.

중요

트랜잭션 로그 백업 체인(파일 스냅샷 백업이 될 수 있음)을 구축하는 초기 완전 백업 이후에는 트랜잭션 로그 백업만 있으면 됩니다. 각 트랜잭션 로그 파일-스냅샷 백업 세트는 모든 데이터베이스 파일의 파일 스냅샷을 포함하고 있어, 데이터베이스 복원이나 로그 복원에 사용할 수 있습니다. 추가적인 완전 백업이나 차등 백업이 필요하지 않습니다. Azure Blob Storage가 각 파일 스냅샷과 기본 블롭의 현재 상태 차이를 처리하기 때문입니다.

SQL Server를 Azure Blob Storage와 함께 사용하는 튜토리얼은 Tutorial: Use Azure Blob Storage with SQL Server를 참조하세요.

파일-스냅샷 백업을 사용하여 복원

각 파일 스냅샷 백업 세트는 모든 데이터베이스 파일의 파일 스냅샷을 포함하므로, 복원하려면 최대 두 개의 인접한 파일 스냅샷 백업 세트가 필요합니다. 이 요구사항은 백업 세트가 전체 데이터베이스 백업이든 로그 백업이든 모두 유효합니다. 전통적인 스트리밍 백업에서는 복원 과정에 전체 백업, 차별 백업, 그리고 하나 이상의 트랜잭션 로그 백업이 필요합니다. 회복 단계는 두 접근법 모두 동일합니다.

백업 세트의 시점으로: 특정 파일 스냅샷 백업 세트 RESTORE DATABASE 의 시점으로 데이터베이스를 복원하려면 해당 백업 세트와 기본 블롭만 있으면 됩니다. 트랜잭션 로그, 파일-스냅샷 백업 세트와 함께 작동하기 때문에 RESTORE DATABASE 일반적으로 트랜잭션 로그 백업 세트를 사용하고 전체 데이터베이스 백업 세트는 거의 사용하지 않습니다. 이 문서 뒷부분의 예제를 참조하세요.

두 파일 스냅샷 백업 세트 사이의 시점으로: 인접한 두 트랜잭션 로그 백업 세트 사이의 특정 시점으로 데이터베이스를 복원하려면, RESTORE DATABASE 복원하려는 시점 이전과 이후의 두 개의 트랜잭션 로그 백업 세트만 필요합니다. 앞서 백업 세트를 사용해서 실행 RESTORE DATABASE ... WITH NORECOVERY 하고, 그 다음에 나중에 사용하는 백업 세트로 실행 RESTORE LOG ... WITH RECOVERY 하세요. 인수를 사용 STOPAT 해 트랜잭션 로그 백업에서 복구를 중단할 시점을 지정하세요. 이 문서 뒷부분의 예제를 참조하세요.

파일 백업 세트 유지 관리

파일 스냅샷 백업 세트 삭제: 인 FORMAT 수로 파일 스냅샷 백업 세트를 덮어쓸 수 없습니다. 이 FORMAT 주장은 원래 파일-스냅샷 백업에서 파일 스냅샷을 고아 분할 수 있기 때문에 허용되지 않습니다. 백업 세트를 삭제하려면 시스템 저장 프로시저를 sys.sp_delete_backup 사용하세요. 백업 파일과 세트 내 모든 파일 스냅샷을 제거합니다. 다른 삭제 방법은 백업 파일을 제거하고 파일 스냅샷은 남겨둘 수 있습니다.

고아 백업 파일 스냅샷 삭제: 백업 파일을 삭제 sys.sp_delete_backup하거나, 데이터베이스나 데이터 파일을 삭제할 때 해당 블록에 관련 백업 파일 스냅샷이 남아 있을 때 고아 파일 스냅샷이 생길 수 있습니다. 후보를 찾으려면 시스템 기능을 사용 sys.fn_db_backup_file_snapshots 해 데이터베이스 파일의 모든 파일 스냅샷을 나열하세요. 특정 백업 세트에 속하는 파일 스냅샷을 확인하려면 시스템 저장 프로시저를 RESTORE FILELISTONLY 사용하세요. 그 다음 시스템 저장 프로시저로 sys.sp_delete_backup_file_snapshot 고아를 제거하세요. 이 글의 후반부에서 예시들을 참고하세요.

자세한 내용은 다음을 참조하세요:

고려사항 및 제한사항

프리미엄 저장 공간: 프리미엄 저장장치를 사용할 때는 다음과 같은 제한사항이 적용됩니다:

단일 스토리지 계정: 파일 스냅샷과 목적지 블롭은 반드시 같은 스토리지 계정을 사용해야 합니다.

대량 복구 모델: 대량 로그 복구 모델을 사용해 최소한의 트랜잭션만 포함하는 트랜잭션 로그 백업을 사용할 경우, 그 백업에서 로그(시점 복구 포함)를 복원할 수 없습니다. 대신, 데이터베이스를 파일 스냅샷 백업 세트 시점으로 복원하세요. 스트리밍 백업에도 같은 제한이 적용됩니다.

온라인 복원: 파일 스냅샷 백업에서 온라인 복원을 할 수 없습니다. 온라인 복원에 대한 자세한 내용은 온라인 복원(SQL Server)을 참조하세요.

청구: SQL Server 파일 스냅샷 백업은 데이터 변경 시 요금을 추가합니다. 자세한 내용은 스냅샷에서 요금이 발생하는 방식 이해를 참조하세요.

아카이브: 파일 스냅샷 백업을 Azure Blob Storage나 스트리밍 백업으로 아카이브할 수 있습니다. Azure Blob Storage의 경우, file-snapshot 백업 세트의 스냅샷을 별도의 블롭으로 복사하세요. 스트리밍 백업의 경우, 파일 스냅샷 백업을 새 데이터베이스로 복원한 후, 압축 및/또는 암호화가 적용된 일반 스트리밍 백업을 받으세요. 기본 블롭과 독립적으로 원하는 만큼 아카이브를 보관할 수 있습니다.

중요

여러 개의 파일 스냅샷 백업을 유지하는 것은 성능 부담이 적지만, 너무 많이 유지하면 데이터베이스의 입출력 성능에 영향을 줄 수 있습니다. 복구 지점 목표를 달성하는 데 필요한 파일 스냅샷 백업만 보관하세요.

파일-스냅샷 백업을 사용하여 데이터베이스 및 로그 백업

다음 예시는 샘플 데이터베이스를 AdventureWorks2025 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

SQL Server 파일-스냅샷 백업에서 복원

다음 예시는 트랜잭션 로그 파일 스냅샷 백업 세트를 사용하여 데이터베이스를 AdventureWorks2025 복원하며, 복구 작업을 보여줍니다. 단일 트랜잭션 로그, 파일-스냅샷 백업 세트에서 데이터베이스를 복원할 수 있습니다.

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

SQL Server 파일-스냅샷 백업에서 특정 시점으로 복원

다음 예시는 두 개의 트랜잭션 로그 파일 스냅샷 백업 세트를 사용하여 지정된 시점의 데이터베이스 상태를 복원 AdventureWorks2025 하며, 복구 작업을 보여줍니다.

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

데이터베이스 파일-스냅샷 백업 세트 삭제

파일-스냅샷 백업 세트를 삭제하려면 sys.sp_delete_backup 시스템 저장 프로시저를 사용합니다. 데이터베이스 이름을 포함시켜 프로시저가 백업 세트가 해당 데이터베이스의 백업인지 검증합니다. 데이터베이스 이름을 생략하면 절차가 그 검사를 건너뛰고 백업 세트와 파일 스냅샷을 삭제합니다. 자세한 내용은 sp_delete_backup을 참조하세요.

경고

예를 들어, Azure 포털이나 SQL Server Management Studio의 개체 탐색기에서 Azure Storage 노드에서 파일 스냅샷 백업 세트를 삭제하면, 파일 스냅샷은 남아 있습니다. 이 도구들은 파일 스냅샷에 대한 포인터를 담고 있는 백업 파일만 제거합니다. 남은 파일 스냅샷을 찾으려면 시스템 기능을 사용한 sys.fn_db_backup_file_snapshots 후 시스템 저장 프로시저로 sys.sp_delete_backup_file_snapshot 각 파일을 삭제하세요.

다음 예시는 파일 스냅샷 백업 세트를 삭제하며, 그 백업 파일과 세트 내 모든 파일 스냅샷을 포함합니다.

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

데이터베이스 백업 파일 스냅샷 보기

각 데이터베이스 파일의 기본 블롭 스냅샷을 나열하려면 시스템 함수를 sys.fn_db_backup_file_snapshots 사용하세요. 파일-스냅샷 백업 세트의 백업 파일을 삭제할 때 다른 무언가가 sys.sp_delete_backup 백업 파일을 삭제할 때 남는 백업 파일 스냅샷을 찾을 수 있습니다. 어떤 파일 스냅샷이 온전한 백업 세트에 속하는지 확인하려면 RESTORE FILELISTONLY 각 백업 파일이 참조하는 파일 스냅샷을 나열하세요. 자세한 내용은 sys.fn_db_backup_file_snapshotsRESTORE 진술서 - FILELISTONLY를 참조하세요.

다음 예시는 데이터베이스의 모든 백업 파일 스냅샷을 나열합니다.

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

개별 데이터베이스 백업 파일 스냅샷을 삭제합니다

데이터베이스 베이스 블롭의 개별 백업 파일 스냅샷을 삭제하려면 시스템 저장 프로시저를 sys.sp_delete_backup_file_snapshot 사용하세요. 주로 백업 파일을 삭제하는 다른 프로세스 sys.sp_delete_backup 가 남는 고아 파일 스냅샷을 정리하는 데 사용합니다. 자세한 내용은 sp_delete_backup_file_snapshot 참조하세요.

경고

파일 스냅샷 백업 세트에 속하는 개별 파일 스냅샷을 삭제하면 해당 백업 세트가 무효화됩니다.

다음 예시는 백업 파일 스냅샷을 삭제합니다. URL은 .에서 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