다음을 통해 공유


Azure Blob Storage의 URL에 SQL Server 백업

적용 대상:SQL ServerAzure SQL Managed Instance

이 문서에서는 Azure Blob Storage를 백업 대상으로 사용하는 데 필요한 개념, 요구 사항 및 구성 요소를 소개합니다. 백업 및 복원 기능은 DISK 또는 TAPE을 사용할 때와 동일하거나 유사하지만, 다소의 차이가 있습니다. 이러한 차이점과 몇 가지 코드 예제가 이 문서에서 소개됩니다.

Tip

관리되는 ID를 사용하여 URL로 백업할 수 있는 기능은 SQL Server 2025(17.x)부터 지원됩니다. 관리 ID를 사용하여 URL로 백업하기(미리 보기) - Azure Arc에서 사용하도록 설정된 SQL Server을 검토합니다.

Overview

SQL Server 2012 서비스 팩 1 CU2 및 SQL Server 2014에서는 Azure Blob Storage를 가리키는 URL에 백업하는 기능을 도입했으며 익숙한 T-SQL 구문을 사용하여 Azure Storage에 안전하게 백업을 작성합니다. SQL Server 2016(13.x)에서는 Azure Storage 보안 정책에 인증서를 인증하는 안전하고 간단한 방법인 SAS(공유 액세스 서명) 키를 통한 보안 및 Azure의 데이터베이스 파일에 대한File-Snapshot Backup 을 도입했습니다.

Azure Blob Storage에 백업을 수행하거나 Azure Blob Storage에서 복원하려면 구성 요소와 구성 요소 간의 상호 작용을 이해하는 것이 중요합니다.

이 프로세스의 첫 번째 단계에서는 Azure 구독 내에 Azure Storage 계정을 만듭니다. 이 스토리지 계정은 스토리지 계정으로 만든 모든 컨테이너 및 개체에 대한 전체 관리 권한이 있는 관리 계정입니다. SQL Server는 Azure Storage 계정 이름 및 액세스 키 값을 사용하여 Azure Blob Storage에 대한 Blob을 인증 및 작성하고 읽거나 특정 컨테이너에서 생성된 공유 액세스 서명 토큰을 사용하여 읽기 및 쓰기 권한을 부여할 수 있습니다. Azure 스토리지 계정에 대한 자세한 내용은 Azure 스토리지 계정 정보 를 참조하고, 공유 액세스 서명에 대한 자세한 내용은 공유 액세스 서명, 1부: SAS 모델 이해를 참조하세요. SQL Server 자격 증명은 해당 인증 정보를 저장하며 백업 또는 복원 작업 중에 사용됩니다.

Azure Storage 및 S3 호환 스토리지

SQL Server 2022(16.x)는 백업 및 복원 기능을 사용하여 S3 호환 개체 스토리지에 백업을 작성하는 기능을 도입하며, 이는 백업 디바이스 유형으로 Azure Blob Storage를 사용한 URL에 백업을 사용하는 것과 개념적으로 유사합니다. SQL Server 2022(16.x)는 REST API를 사용하여 새 S3 커넥터에 대한 지원을 추가하여 구문을 확장 BACKUP/RESTORE TO/FROM URL 합니다.

이 문서에는 Azure Blob Storage에 대한 URL에 Backup을 사용하는 방법에 대한 정보가 포함되어 있습니다. S3 호환 스토리지를 위한 URL로 백업을 사용하는 방법에 대한 자세한 내용은 S3 호환 개체 스토리지에 URL로 백업하는 SQL Server를 참조하세요.

Azure Storage 블록 Blob 및 페이지 Blob으로 백업

Azure Blob Storage에 저장할 수 있는 Blob 유형에는 블록과 페이지 Blob 두 가지가 있습니다. SQL Server 2016 이상의 경우 블록 Blob이 선호됩니다.

스토리지 키가 자격 증명에 사용되는 경우 페이지 Blob이 사용됩니다. 공유 액세스 서명을 사용하면 블록 Blob이 사용됩니다.

Azure Blob Storage로 백업하기 위한 블록 Blob으로의 백업은 SQL Server 2016 이상 버전에서만 제공됩니다. SQL Server 2016 이상을 실행하는 경우 페이지 Blob 대신 Blob을 차단하도록 백업합니다.

기본 이유는 다음과 같습니다.

  • 공유 액세스 서명은 스토리지 키와 비교할 때 Blob 액세스 권한을 부여하는 보다 안전한 방법입니다.
  • 여러 블록 Blob에 백업하면 보다 좋은 백업 및 복원 성능을 얻고 더 큰 데이터베이스 백업을 지원할 수 있습니다.
  • 블록 블롭페이지 블롭보다 저렴합니다.
  • 프록시 서버를 통해 페이지 Blob에 백업해야 하는 고객은 backuptourl.exe을 사용해야 합니다.

Azure Blob Storage에 대용량 데이터베이스를 백업하는 경우에는 Azure SQL Managed Instance T-SQL 차이점, 제한 사항 및 알려진 문제에 나열된 제한 사항이 적용됩니다.

데이터베이스가 너무 크면 다음 중 하나를 수행합니다.

  • 백업 압축 사용 또는
  • 여러 블록 Blob에 백업

Azure Arc로 활성화된 Linux, 컨테이너 및 SQL Managed Instance에 대한 지원

다음을 포함하여 SQL Server 인스턴스가 Linux에서 호스팅되는 경우:

  • 독립 실행형 운영 체제
  • Containers
  • Azure Arc 지원 SQL Managed Instance
  • 기타 모든 Linux 기반 환경

Azure Blob Storage URL 패턴에 대해 지원되는 유일한 백업은 공유 액세스 서명을 사용하는 블록 Blob에 대한 백업입니다.

Azure Blob Storage (애저 블롭 스토리지)

스토리지 계정: 스토리지 계정은 모든 스토리지 서비스의 시작점입니다. Azure Blob Storage에 액세스하려면 먼저 Azure Storage 계정을 만듭니다. 자세한 내용은 스토리지 계정 만들기를 참조하세요.

컨테이너: 컨테이너는 Blob 집합의 그룹화 기능을 제공하며 무제한의 Blob을 저장할 수 있습니다. SQL Server 백업을 Azure Blob 스토리지에 쓰려면 최소한 루트 컨테이너를 만들어야 합니다. 컨테이너에서 공유 액세스 서명 토큰을 생성하고 특정 컨테이너의 개체에만 액세스를 허용할 수 있습니다.

Blob: 모든 형식 및 크기의 파일입니다. Azure Blob Storage에 저장할 수 있는 Blob 유형에는 블록과 페이지 Blob 두 가지가 있습니다. SQL Server 백업에서는 사용되는 TRANSACT-SQL 구문에 따라 미확인 개체 유형 중 하나를 사용할 수 있습니다. Blob에는 https://<storage account>.blob.core.windows.net/<container>/<blob> URL 형식을 사용하여 주소를 지정할 수 있습니다. 자세한 내용은 Azure Blob Storage 소개를 참조하세요. 페이지 Blob과 블록 Blob에 대한 자세한 내용은 블록 Blob 및 페이지 Blob 이해를 참조하세요.

Azure Blob Storage 계정, 컨테이너 및 Blob 다이어그램

Azure 스냅샷: 특정 시점에 찍은 Azure Blob의 스냅샷입니다. 자세한 내용은 미확인 개체 스냅샷 만들기를 참조하세요. 이제 SQL Server 백업에서는 Azure Blob Storage에 저장된 데이터베이스 파일의 Azure 스냅샷 백업을 지원합니다. 자세한 내용은 Azure의 데이터베이스 파일에 대한 파일-스냅샷 백업을 참조하세요.

SQL Server 구성 요소

URL: URL은 고유한 백업 파일에 대한 URI(Uniform Resource Identifier)를 지정합니다. URL은 SQL Server 백업 파일의 위치와 이름을 제공하는 데 사용됩니다. URL은 컨테이너뿐만 아니라 실제 Blob을 가리킵니다. Blob이 존재하지 않으면 생성됩니다. 기존 Blob이 지정된 BACKUP 경우 Blob에서 WITH FORMAT 기존 백업 파일을 덮어쓰는 옵션을 지정하지 않으면 실패합니다.

샘플 URL 값 https://ACCOUNTNAME.blob.core.windows.net/<CONTAINER>/FILENAME.bak은 다음과 같습니다.

Note

HTTP를 사용하여 URL에 백업 하는 것은 지원되지 않습니다 .

자격 증명: SQL Server 자격 증명은 SQL Server 외부의 리소스에 연결하는 데 필요한 인증 정보를 저장하는 데 사용되는 개체입니다. 여기에서 SQL Server 백업 및 복원 프로세스에서는 자격 증명을 사용하여 Azure Blob Storage와 해당 컨테이너 및 Blob 개체에 인증합니다. 자격 증명은 스토리지 계정의 이름 및 스토리지 계정 액세스 키 값 또는 컨테이너 URL 및 공유 액세스 서명 토큰을 저장합니다. 자격 증명이 만들어지면 문의 구문 BACKUP/RESTORE 에 따라 Blob 형식과 필요한 자격 증명이 결정됩니다.

공유 액세스 서명을 만드는 방법에 대한 예제는 공유 액세스 서명 만들기 예제를 참조하고, SQL Server 자격 증명을 만들려면 자격 증명 만들기 예제를 참조하세요. 해당 예제는 모두 이 문서의 뒷부분에 있습니다.

자격 증명에 대한 자세한 내용은 자격 증명(데이터베이스 엔진)을 참조하세요.

자격 증명이 사용되는 다른 예제에 대한 자세한 내용은 SQL Server 에이전트 프록시 만들기를 참조하세요.

Azure 변경할 수 없는 스토리지 지원

SQL Server 2025(17.x)는 랜섬웨어 공격으로부터 보호하는 Azure 변경할 수 없는 스토리지에 대한 지원을 도입했습니다. 변경할 수 없는 스토리지에 기록된 파일은 불변성으로 정의된 대로 수정하거나 삭제할 수 없습니다.

일반적으로 SQL Server 백업은 두 단계로 만들어집니다. 처음에 .bak 백업 파일은 0으로 만든 다음 파일은 데이터로 업데이트됩니다. 변경할 수 없는 스토리지에 대한 파일 수정은 파일이 작성되고 커밋되면 허용되지 않으므로 이제 백업 프로세스는 초기 단계를 건너뛰어 0으로 백업 파일을 만듭니다. 대신, 블록 블롭에 기록할 때 전체 백업이 하나의 단계로 생성됩니다.

SQL Server 2025(17.x) 백업에서 URL로 변경할 수 없는 스토리지를 사용하려면 다음 단계를 수행합니다.

  1. Azure Storage 컨테이너에 대한 불변성을 구성합니다.

  2. BACKUP을 실행하여 Azure Storage 컨테이너에 데이터베이스를 백업합니다. 변경할 수 없는 스토리지에서 옵션을 사용하고 WITH FORMAT 동일한 이름의 백업이 이미 있는 경우 오류가 발생하여 백업이 실패합니다.

    BACKUP DATABASE [<Database>] TO URL = '<url>';
    

Azure Blob Storage 보안

다음은 Azure Blob Storage로 백업하거나 복원하는 경우 보안 고려 사항과 요구 사항입니다.

  • Azure Blob Storage용 컨테이너를 만들 때 프라이빗에 대한 액세스를 설정하는 것이 좋습니다. 액세스 권한을 프라이빗으로 설정하면 Azure 계정에 인증하는 데 필요한 정보를 제공할 수 있는 사용자 또는 계정으로 액세스가 제한됩니다.

    Important

    SQL Server를 사용하려면 Azure 계정 이름 및 액세스 키 인증 또는 공유 액세스 서명 및 액세스 토큰이 SQL Server 자격 증명에 저장되어야 합니다. 이 정보는 백업 또는 복원 작업을 수행할 때 Azure 계정을 인증하는 데 사용됩니다.

    Warning

    Azure Storage는 스토리지 계정에 대한 공유 키 권한 부여 를 사용하지 않도록 지원합니다. 공유 키 권한 부여를 사용하지 않도록 설정하면 SQL Server 백업 URL이 작동하지 않습니다.

  • BACKUP 또는 RESTORE 명령을 발급하는 데 사용되는 사용자 계정은 db_backup 연산자 데이터베이스 역할에 있으며, 자격 증명 변경 권한을 가져야 합니다.

Azure Blob Storage 백업/복원의 제한 사항

  • SQL Server는 페이지 Blob을 사용하여 지원되는 최대 백업 크기를 1TB로 제한합니다. 블록 Blob을 사용하여 지원되는 최대 백업 크기는 약 200GB(50,000개 블록 * 4MB MAXTRANSFERSIZE)로 제한됩니다. 블록 Blob은 훨씬 더 큰 백업 크기를 지원하기 위해 스트라이프를 지원합니다. 제한은 최대 64개의 URL이며, 그 결과 수식은 64 stripes * 50,000 blocks * 4MB maxtransfersize = 12.8 TB입니다.

    Important

    단일 블록 Blob에서 지원하는 최대 백업 크기는 200GB이지만 SQL Server는 더 작은 블록 크기로 쓸 수 있으므로 전체 백업이 전송되기 전에 SQL Server가 50,000블록 제한에 도달할 수 있습니다. 특히 차등 또는 비압축 백업을 사용하는 경우 블록 제한을 피하기 위해 스트라이프 백업(200GB보다 작은 경우에도)을 수행합니다.

  • Transact-SQL, SMO, PowerShell cmdlet 또는 SQL Server Management Studio 백업 또는 복원 마법사를 사용하여 백업 또는 복원 문을 실행할 수 있습니다.

  • Azure Storage 계정에 백업할 때 SQL Server는 SAS(공유 액세스 서명) 토큰 또는 스토리지 계정 키로만 인증을 지원합니다. Microsoft Entra ID(이전의 Azure Active Directory)를 사용한 인증을 비롯한 다른 모든 인증 방법은 지원되지 않습니다.

  • 논리 디바이스 이름 만들기는 지원되지 않습니다. 따라서 SQL Server Management Studio를 사용 sp_dumpdevice 하거나 통해 백업 디바이스로 URL을 추가하는 것은 지원되지 않습니다.

  • 기존 백업 Blob에 추가하는 것은 지원되지 않습니다. 기존 Blob에 대한 백업은 WITH FORMAT 옵션을 사용해야만 덮어쓸 수 있습니다. 파일-스냅샷 백업(즉, WITH FILE_SNAPSHOT 인수를 사용하여)을 사용하는 경우, 원래의 파일-스냅샷 백업으로 만들어진 고아 파일-스냅샷을 남기지 않기 위해 WITH FORMAT 인수는 허용되지 않습니다.

  • 단일 백업 작업에서 여러 blob에 대한 백업은 블록 blob을 사용하고 SQL 자격 증명에 대한 스토리지 계정 키 대신 SAS(공유 액세스 서명) 토큰을 사용하는 경우에만 지원됩니다.

  • BLOCKSIZE은(는) 페이지 Blob에 대해 지정할 수 없습니다.

  • MAXTRANSFERSIZE 지정은 페이지 Blob에서는 지원되지 않습니다.

  • 백업 세트 옵션 지정 - RETAINDAYSEXPIREDATE는 지원되지 않습니다.

  • SQL Server는 백업 디바이스 이름이 최대 259자로 제한됩니다. URL BACKUP TO URLhttps://.blob.core.windows.net//.bak을 지정하는 데 필요한 필수 요소로 36자를 사용하며, 이에 따라 계정, 컨테이너 및 Blob 이름을 합쳐 사용할 수 있는 223자가 남습니다.

  • SQL Server 2019(15.x) 및 이전 버전에는 사용할 수 있는 토큰의 유형을 제한하는 SAS(공유 액세스 서명) 토큰의 경우 256자로 제한됩니다(예: 사용자 위임 키 토큰은 지원되지 않음).

  • 서버가 프록시 서버를 통해 Azure에 액세스하는 경우 추적 플래그 1819를 사용하고 다음 방법 중 하나를 통해 WinHTTP 프록시 구성을 설정해야 합니다.

    • Windows XP 또는 Windows Server 2003 이하의 proxycfg.exe 유틸리티입니다.
    • Windows Vista 및 Windows Server 2008 이상의 netsh.exe 유틸리티입니다.
  • Azure Blob Storage에 대한 변경할 수 없는 스토리지 는 지원되지 않습니다. 변경할 수 없는 스토리지 정책을 false로 설정합니다.

  • URL에 대한 백업은 Premium Storage에서 지원되지 않습니다.

Azure Blob Storage에서 지원되는 인수 및 문

Azure Blob Storage 백업/복원 문 지원

백업/복원 문장 Supported Exceptions Comments
BACKUP Yes BLOCKSIZEMAXTRANSFERSIZE 블록 Blob에 대해 지원됩니다. 페이지 블롭을 지원하지 않습니다. BACKUP 블록 Blob에 SQL Server 자격 증명에 저장된 공유 액세스 서명이 필요합니다. BACKUP 페이지 Blob 사용 시 SQL Server 자격 증명에 저장된 스토리지 계정 키가 필요하며, WITH CREDENTIAL 인수를 지정해야 합니다.
RESTORE Yes SQL Server 자격 증명을 정의해야 하며, 스토리지 계정 키를 비밀로 사용하여 SQL Server 자격 증명을 정의할 경우 인수를 지정해야 WITH CREDENTIAL 합니다.
RESTORE FILELISTONLY Yes SQL Server 자격 증명을 정의해야 하며, 스토리지 계정 키를 비밀로 사용하여 SQL Server 자격 증명을 정의할 경우 인수를 지정해야 WITH CREDENTIAL 합니다.
RESTORE HEADERONLY Yes SQL Server 자격 증명을 정의해야 하며, 스토리지 계정 키를 비밀로 사용하여 SQL Server 자격 증명을 정의할 경우 인수를 지정해야 WITH CREDENTIAL 합니다.
RESTORE LABELONLY Yes SQL Server 자격 증명을 정의해야 하며, 스토리지 계정 키를 비밀로 사용하여 SQL Server 자격 증명을 정의할 경우 인수를 지정해야 WITH CREDENTIAL 합니다.
RESTORE VERIFYONLY Yes SQL Server 자격 증명을 정의해야 하며, 스토리지 계정 키를 비밀로 사용하여 SQL Server 자격 증명을 정의할 경우 인수를 지정해야 WITH CREDENTIAL 합니다.
RESTORE REWINDONLY No

백업 문에 대한 구문 및 일반 정보는 BACKUP을 참조하세요.

복원 문에 대한 구문 및 일반 정보는 RESTORE 문을 참조하세요.

Azure Blob Storage 백업 인수 지원

Argument Supported Exception Comments
DATABASE Yes
LOG Yes
TO(URL) Yes URL 및 DISKTAPE와 달리, URL은 논리 이름을 지정하거나 생성하는 것을 지원하지 않습니다. 이 인수는 백업 파일의 URL 경로를 지정하는 데 사용됩니다.
MIRROR TO Yes
WITH 옵션:
CREDENTIAL Yes WITH CREDENTIAL 는 Azure Blob Storage에 백업하는 옵션을 사용하는 BACKUP TO URL 경우에만 지원되며, SQL Server 자격 증명이 스토리지 계정 키를 비밀로 사용하여 정의된 경우에만 지원됩니다.
FILE_SNAPSHOT Yes
ENCRYPTION Yes 인수를 WITH ENCRYPTION 지정하면 SQL Server File-Snapshot Backup은 백업을 수행하기 전에 전체 데이터베이스가 TDE로 암호화되었는지 확인하고, 이 경우 데이터베이스의 TDE에 지정된 알고리즘을 사용하여 파일-스냅샷 백업 파일 자체를 암호화합니다. 전체 데이터베이스의 데이터베이스에 있는 모든 데이터가 암호화되지 않은 경우 백업이 실패합니다(예: 암호화 프로세스가 아직 완료되지 않음).
DIFFERENTIAL Yes
COPY_ONLY Yes
COMPRESSION|NO_COMPRESSION Yes 파일 스냅샷 백업에 지원되지 않습니다.
DESCRIPTION Yes
NAME Yes
EXPIREDATE | RETAINDAYS No
NOINIT | INIT No Blob에 추가할 수 없습니다. 백업을 덮어쓰려면 인수를 WITH FORMAT 사용합니다. 하지만 파일-스냅샷 백업을 사용할 때는 WITH FILE_SNAPSHOT 인수를 사용하고, WITH FORMAT 인수는 원래 백업과 연결되지 않은 독립된 파일-스냅샷을 남기지 않도록 허용되지 않습니다.
NOSKIP | SKIP No
NOFORMAT | FORMAT Yes 지정하지 않으면 WITH FORMAT 기존 Blob으로 수행된 백업이 실패합니다. 지정된 경우 WITH FORMAT 기존 Blob을 덮어씁니다. 파일-스냅샷 백업(즉, WITH FILE_SNAPSHOT 인수를 사용하여)을 사용하는 경우, 원래의 파일-스냅샷 백업으로 만들어진 고아 파일-스냅샷을 남기지 않기 위해 FORMAT 인수는 허용되지 않습니다. 하지만 파일-스냅샷 백업을 사용할 때는 WITH FILE_SNAPSHOT 인수를 사용하고, WITH FORMAT 인수는 원래 백업과 연결되지 않은 독립된 파일-스냅샷을 남기지 않도록 허용되지 않습니다.
MEDIADESCRIPTION Yes
MEDIANAME Yes
BLOCKSIZE Yes 페이지 Blob에 지원되지 않습니다. 블록 Blob에 지원됩니다. BLOCKSIZE=65536 블록 Blob에서 허용되는 50,000개 블록의 사용을 최적화하도록 권장합니다.
BUFFERCOUNT Yes
MAXTRANSFERSIZE Yes 페이지 Blob에 지원되지 않습니다. 블록 Blob에 지원됩니다. 기본값은 1048576입니다. 값의 범위는 최대 4MB(65,536바이트)입니다.

MAXTRANSFERSIZE=4194304 블록 Blob에서 허용되는 50,000개 블록의 사용을 최적화하도록 권장합니다.
NO_CHECKSUM | CHECKSUM Yes
STOP_ON_ERROR | CONTINUE_AFTER_ERROR Yes
STATS Yes
REWIND | NOREWIND No
UNLOAD | NOUNLOAD No
NORECOVERY | STANDBY Yes
NO_TRUNCATE Yes

백업 인수에 대한 자세한 내용은 BACKUP을 참조 하세요.

Azure Blob Storage 복원 인수 지원

Argument Supported Exceptions Comments
DATABASE Yes
LOG Yes
FROM(URL) Yes 인수 FROM URL 는 백업 파일의 URL 경로를 지정하는 데 사용됩니다.
WITH 옵션:
CREDENTIAL Yes WITH CREDENTIAL 는 Azure Blob Storage에서 복원하는 옵션을 사용하는 RESTORE FROM URL 경우에만 지원됩니다.
PARTIAL Yes
RECOVERY | NORECOVERY | STANDBY Yes
LOADHISTORY Yes
MOVE Yes
REPLACE Yes
RESTART Yes
RESTRICTED_USER Yes
FILE No
PASSWORD Yes
MEDIANAME Yes
MEDIAPASSWORD Yes
BLOCKSIZE Yes
BUFFERCOUNT No
MAXTRANSFERSIZE No
CHECKSUM | NO_CHECKSUM Yes
STOP_ON_ERROR | CONTINUE_AFTER_ERROR Yes
FILESTREAM Yes 스냅샷 백업에 지원되지 않습니다.
STATS Yes
REWIND | NOREWIND No
UNLOAD | NOUNLOAD No
KEEP_REPLICATION Yes
KEEP_CDC Yes
ENABLE_BROKER | ERROR_BROKER_CONVERSATIONS | NEW_BROKER Yes
STOPAT | STOPATMARK | STOPBEFOREMARK Yes

복원 인수에 대한 자세한 내용은 RESTORE 문 - 인수를 참조하세요.

SSMS를 사용하여 백업

SQL Server 자격 증명을 사용하여 SQL Server Management Studio의 백업 작업을 통해 URL에 데이터베이스를 백업할 수 있습니다.

Note

SQL Server 파일-스냅샷 백업을 만들거나 기존 미디어 세트를 덮어쓰려면 SQL Server Management Studio의 백업 작업 대신 Transact-SQL, PowerShell 또는 C#을 사용해야 합니다.

다음 단계에서는 Azure Storage로 백업할 수 있도록 SQL Server Management Studio에서 변경된 데이터베이스 백업 작업에 대해 설명합니다.

  1. 개체 탐색기에서 SQL Server 데이터베이스 엔진의 인스턴스에 연결하고 해당 인스턴스를 확장합니다.

  2. 데이터베이스를 확장하고 원하는 데이터베이스를 마우스 오른쪽 단추로 클릭하고 작업을 가리킨 다음 백업을 선택합니다.

  3. 대상 섹션의 일반 페이지에서 URL 옵션은 백업 대상: 드롭다운 목록에서 사용할 수 있습니다. URL 옵션은 Azure Storage에 대한 백업을 만드는 데 사용됩니다. 추가를 선택하면 백업 대상 선택 대화 상자가 열립니다.

    1. Azure Storage 컨테이너: 백업 파일을 저장할 Azure Storage 컨테이너의 이름입니다. 드롭다운 목록에서 기존 컨테이너를 선택하거나 컨테이너를 수동으로 입력합니다.

    2. 공유 액세스 정책: 수동으로 입력한 컨테이너에 대한 공유 액세스 서명을 입력합니다. 기존 컨테이너를 선택한 경우에는 이 필드를 사용할 수 없습니다.

    3. 백업 파일: 백업 파일의 이름입니다.

    4. 새 컨테이너: 공유 액세스 서명이 없는 기존 컨테이너를 등록하는 데 사용됩니다. Microsoft Azure 구독에 연결(백업 TO URL)을 참조하세요.

Note

추가 는 단일 미디어 세트에 대해 여러 백업 파일 및 스토리지 컨테이너를 지원합니다.

URL을 대상으로 선택하면 미디어 옵션 페이지의 특정 옵션을 사용할 수 없습니다. 다음 문서에서는 데이터베이스 백업 대화 상자에 대한 자세한 정보를 제공합니다.

유지 관리 계획으로 백업

앞에서 설명한 백업 작업과 마찬가지로 SQL Server Management Studio의 유지 관리 계획 마법사에는 대상 옵션 중 하나로 URL 과 SQL 자격 증명과 같은 Azure Storage에 백업하는 데 필요한 기타 지원 개체가 포함됩니다. 자세한 내용은 Using Maintenance Plan WizardDefine Backup Tasks를 참조하세요.

Note

공유 액세스 토큰을 사용하여 스트라이프 백업 세트, SQL Server 파일-스냅샷 백업 또는 SQL 자격 증명을 만들려면 유지 관리 계획 마법사의 백업 작업 대신 Transact-SQL, PowerShell 또는 C#을 사용해야 합니다.

SSMS로 복원

데이터베이스 복원 작업에는 복원할 디바이스로 URL 이 포함됩니다. 다음 단계에서는 복원 작업을 사용하여 Azure Blob Storage에서 복원하는 방법을 설명합니다.

  1. 데이터베이스를 마우스 오른쪽 단추로 클릭하고 데이터베이스 복원...을 선택합니다.

  2. 일반 페이지의 원본 섹션에서 디바이스를 선택합니다.

  3. 찾아보기(...) 단추를 선택하여 백업 디바이스 선택 대화 상자를 엽니다.

  4. 백업 미디어 유형 드롭다운 목록에서 URL을 선택합니다. 추가를 선택하여 백업 파일 위치 선택 대화 상자를 엽니다.

    1. Azure Storage 컨테이너: 백업 파일을 포함하는 Azure Storage 컨테이너의 정규화된 이름입니다. 드롭다운 목록에서 기존 컨테이너를 선택하거나 정규화된 컨테이너 이름을 수동으로 입력합니다.

    2. 공유 액세스 서명: 지정된 컨테이너에 대한 공유 액세스 서명을 입력하는 데 사용됩니다.

    3. 추가하다: 공유 액세스 서명이 없는 기존 컨테이너를 등록하는 방법입니다. Microsoft Azure 구독에 연결(백업 TO URL)을 참조하세요.

    4. 그래: SQL Server는 제공한 SQL 자격 증명 정보를 사용하여 Azure Storage에 연결하고 Microsoft Azure에서 백업 파일 찾기 대화 상자를 엽니다. 스토리지 컨테이너에 있는 백업 파일이 이 페이지에 표시됩니다. 복원하는 데 사용할 파일을 선택하고 확인을 선택합니다. 그러면 백업 디바이스 선택 대화 상자로 돌아가서 이 대화 상자에서 확인을 선택하면 기본 복원 대화 상자로 돌아가서 복원을 완료할 수 있습니다.

코드 예제

이 섹션에는 다음 예제가 포함되어 있습니다.

Note

Azure Blob Storage에서 SQL Server 2016을 사용하는 방법에 대한 자습서는 자습서: SQL Server에서 Azure Blob Storage 사용

공유 액세스 서명 만들기

다음 예제에서는 새로 만든 컨테이너에서 SQL Server 자격 증명을 만드는 데 사용할 수 있는 공유 액세스 서명을 만듭니다. 이 스크립트는 저장된 액세스 정책에 연결된 공유 액세스 서명을 만듭니다. 자세한 내용은 공유 액세스 서명, 1부: SAS 모델 이해를 참조하세요. 또한 스크립트는 SQL Server에 자격 증명을 만드는 데 필요한 T-SQL 명령을 작성합니다.

Note

이 예제에는 Azure PowerShell이 필요합니다. Azure PowerShell 설치 및 사용에 대한 자세한 내용은 Azure PowerShell을 설치하고 구성하는 방법을 참조하세요. 이러한 스크립트는 Azure PowerShell 5.1.15063을 사용하여 확인되었습니다.

저장된 액세스 정책에 연결된 공유 액세스 서명

# Define global variables for the script
$prefixName = '<a prefix name>'  # used as the prefix for the name for various objects
$subscriptionName = '<your subscription name>'   # the name of subscription name you will use
$locationName = '<a data center location>'  # the data center region you will use
$storageAccountName = $prefixName + 'storage' # the storage account name you will create or use
$containerName = $prefixName + 'container'  # the storage container name to which you will attach the SAS policy with its SAS token
$policyName = $prefixName + 'policy' # the name of the SAS policy

# Set a variable for the name of the resource group you will create or use
$resourceGroupName = $prefixName + 'rg'

# adds an authenticated Azure account for use in the session
Connect-AzAccount

# set the tenant, subscription and environment for use in the rest of
Set-AzContext -SubscriptionName $subscriptionName

# create a new resource group - comment out this line to use an existing resource group
New-AzResourceGroup -Name $resourceGroupName -Location $locationName

# Create a new ARM storage account - comment out this line to use an existing ARM storage account
New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Type Standard_RAGRS -Location $locationName

# Get the access keys for the ARM storage account
$accountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName

# Create a new storage account context using an ARM storage account
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].value

# Creates a new container in Azure Blob Storage
$container = New-AzStorageContainer -Context $storageContext -Name $containerName
$cbc = $container.CloudBlobContainer

# Sets up a Stored Access Policy and a Shared Access Signature for the new container
$policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission "rwld"
$sas = New-AzStorageContainerSASToken -Policy $policyName -Context $storageContext -Container $containerName
Write-Host 'Shared Access Signature= '$($sas.TrimStart('?'))''

# Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature
Write-Host 'Credential T-SQL'
$tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='Shared Access Signature', SECRET='{1}'" -f $cbc.Uri, $sas.TrimStart('?')
$tSql | clip
Write-Host $tSql

스크립트를 성공적으로 실행한 후에는 CREATE CREDENTIAL 명령을 쿼리 도구에 복사하고 SQL Server 인스턴스에 연결하고 명령을 실행하여 공유 액세스 서명으로 자격 증명을 만듭니다.

자격 증명 만들기

다음 예제에서는 Azure Blob Storage 인증용 SQL Server 자격 증명을 만듭니다. 다음 중 하나를 수행합니다.

  1. 공유 액세스 서명 사용

    이전 스크립트를 실행하여 공유 액세스 서명을 만든 경우 SQL Server 인스턴스에 연결된 쿼리 편집기로 CREATE CREDENTIAL을 복사하고 명령을 실행합니다.

    다음 T-SQL은 공유 액세스 서명을 사용하기 위한 자격 증명을 만드는 예입니다.

    IF NOT EXISTS (SELECT *
                   FROM sys.credentials
                   WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>')
        CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>]
            WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '<SAS_TOKEN>';
    
  2. 스토리지 계정 ID 및 액세스 키 사용

    IF NOT EXISTS (SELECT *
                   FROM sys.credentials
                   WHERE name = '<mycredentialname>')
        CREATE CREDENTIAL [<mycredentialname>]
            WITH IDENTITY = '<mystorageaccountname>', SECRET = '<mystorageaccountaccesskey>';
    

전체 데이터베이스 백업 수행

다음 예제에서는 Azure Blob Storage로 AdventureWorks2025 데이터베이스의 전체 데이터베이스 백업을 수행합니다. 다음 샘플 중 하나를 사용합니다.

  1. 공유 액세스 서명을 사용하는 끝 URL

    BACKUP DATABASE AdventureWorks2022
        TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak';
    GO
    
  2. 스토리지 계정 ID 및 액세스 키를 사용하는 끝 URL

    BACKUP DATABASE AdventureWorks2022
    TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak'
    WITH CREDENTIAL = '<mycredentialname>',
    COMPRESSION, STATS = 5;
    GO
    

STOPAT를 사용하여 지정 시간으로 복원

다음 예에서는 지정 시간의 상태로 AdventureWorks2025 샘플 데이터베이스를 복원하고 복원 작업을 보여 줍니다.

공유 액세스 서명을 사용하는 시작 URL

RESTORE DATABASE AdventureWorks2022
    FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022_2015_05_18_16_00_00.bak'
    WITH MOVE 'AdventureWorks2022_data' TO 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2022.mdf',
    MOVE 'AdventureWorks2022_log' TO 'C:\Program Files\Microsoft SQL Server\<myinstancename>\MSSQL\DATA\AdventureWorks2022.ldf',
    NORECOVERY, REPLACE, STATS = 5;
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