적용 대상:SQL Server
Azure SQL Managed Instance
이 문서에서는 Microsoft Azure Blob Storage를 백업 대상으로 사용하는 데 필요한 개념, 요구 사항 및 구성 요소를 소개합니다. 백업 및 복원 기능은 DISK 또는 TAPE를 사용할 때와 동일하거나 유사하며 몇 가지 차이점이 있습니다. 이러한 차이점과 몇 가지 코드 예제가 이 문서에서 소개됩니다.
팁 (조언)
SQL Server 2025(17.x) 미리 보기는 관리 ID를 사용하여 URL에 백업을 도입합니다. 관리 ID를 사용하여 URL로 백업하기(미리 보기) - Azure Arc에서 사용하도록 설정된 SQL Server을 검토합니다.
개요
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 을 도입했습니다.
Microsoft Azure Blob Storage에 백업을 수행하거나 복원하려면 구성 요소와 구성 요소 간의 상호 작용을 이해하는 것이 중요합니다.
이 프로세스의 첫 번째 단계에서는 Azure 구독 내에 Azure Storage 계정을 만듭니다. 이 스토리지 계정은 스토리지 계정으로 만든 모든 컨테이너 및 개체에 대한 전체 관리 권한이 있는 관리 계정입니다. SQL Server에서는 Azure Storage 계정 이름 및 해당 액세스 키 값을 사용하여 Microsoft 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으로 백업
Microsoft Azure Blob Storage에는 블록 Blob과 페이지 Blob이라는 두 가지 유형의 Blob을 저장할 수 있습니다. SQL Server 2016 이상의 경우 블록 Blob이 선호됩니다.
스토리지 키가 자격 증명에 사용되는 경우 페이지 Blob이 사용됩니다. 공유 액세스 서명을 사용하면 블록 Blob이 사용됩니다.
Azure Blob Storage로 백업하기 위한 블록 Blob으로의 백업은 SQL Server 2016 이상 버전에서만 제공됩니다. SQL Server 2016 이상을 실행하는 경우 페이지 Blob 대신 Blob을 차단하도록 백업합니다.
기본 이유는 다음과 같습니다.
- 공유 액세스 서명은 스토리지 키와 비교할 때 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에서 호스팅되는 경우:
- 독립 실행형 운영 체제
- 컨테이너
- Azure Arc 지원 SQL Managed Instance
- 기타 모든 Linux 기반 환경
Azure Blob Storage URL 패턴에 대해 지원되는 유일한 백업은 공유 액세스 서명을 사용하는 블록 Blob에 대한 백업입니다.
Microsoft Azure Blob Storage
스토리지 계정: 스토리지 계정은 모든 스토리지 서비스의 시작점입니다. Microsoft Azure Blob Storage에 액세스하려면 먼저 Azure Storage 계정을 만듭니다. 자세한 내용은 스토리지 계정 만들기를 참조하세요.
컨테이너: 컨테이너는 미확인 개체 집합의 그룹화 기능을 제공하며, 미확인 개체를 무제한으로 저장할 수 있습니다. 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 스냅샷: 지정 시간에 생성된 Azure blob의 스냅샷입니다. 자세한 내용은 미확인 개체 스냅샷 만들기를 참조하세요. 이제 SQL Server 백업에서는 Azure Blob Storage에 저장된 데이터베이스 파일의 Azure 스냅샷 백업을 지원합니다. 자세한 내용은 Azure의 데이터베이스 파일에 대한 파일-스냅샷 백업을 참조하세요.
SQL Server 구성 요소
URL: URL은 고유한 백업 파일에 대한 URI(Uniform Resource Identifier)를 지정합니다. URL은 SQL Server 백업 파일의 위치와 이름을 제공하는 데 사용됩니다. URL은 컨테이너뿐만 아니라 실제 Blob을 가리킵니다. Blob이 없으면 만들어집니다. 기존 blob이 지정된 경우에는 “WITH FORMAT” 옵션을 지정하여 blob에서 기존 백업 파일을 덮어쓰지 않으면 BACKUP이 실패합니다.
샘플 URL 값 https://ACCOUNTNAME.blob.core.windows.net/<CONTAINER>/FILENAME.bak
은 다음과 같습니다.
참고 항목
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으로 백업 파일을 만듭니다. 대신, 블록 블롭에 기록할 때 전체 백업이 하나의 단계로 생성됩니다.
미리 보기 중에는 URL에 대한 백업을 변경할 수 없는 스토리지 지원을 사용하도록 설정하려면 추적 플래그 3012 가 필요합니다.
SQL Server 2025(17.x) 미리 보기 백업과 함께 변경할 수 없는 스토리지를 URL로 사용하려면 다음 단계를 수행합니다.
- Azure Storage 컨테이너에 대한 불변성을 구성합니다.
- 다음 DBCC 명령을 실행하여 SQL Server 인스턴스에 대해 추적 플래그 3012를 사용하도록 설정합니다.
DBCC TRACEON(3012,-1)
; -
BACKUP을 실행하여 Azure Storage 컨테이너에 데이터베이스를 백업합니다.
BACKP DATABASE [<Database>] TO URL = ‘<url>’ WITH FORMAT
;
Azure Blob Storage 보안
다음은 Azure Blob Storage로 백업하거나 복원하는 경우 보안 고려 사항과 요구 사항입니다.
Azure Blob Storage의 컨테이너를 만들 때 액세스 권한을 프라이빗으로 설정하는 것이 좋습니다. 액세스 권한을 프라이빗으로 설정하면 Azure 계정에 인증하는 데 필요한 정보를 제공할 수 있는 사용자 또는 계정으로 액세스가 제한됩니다.
중요합니다
SQL Server에서는 Azure 계정 이름 및 액세스 키 인증 또는 공유 액세스 서명 및 액세스 토큰을 SQL Server 자격 증명에 저장해야 합니다. 이 정보는 백업 또는 복원 작업을 수행할 때 Azure 계정을 인증하는 데 사용됩니다.
경고
Azure Storage는 스토리지 계정에 대한 공유 키 권한 부여 비활성화를 지원합니다. 공유 키 권한 부여를 사용하지 않도록 설정하면 SQL Server 백업 URL이 작동하지 않습니다.
BACKUP 또는 RESTORE 명령을 실행하는 데 사용되는 사용자 계정은 모든 자격 증명 변경 권한이 있는 db_backup operator 데이터베이스 역할에 있어야 합니다.
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
입니다.중요합니다
단일 블록 Blob에서 지원하는 최대 백업 크기는 200GB이지만 SQL Server는 더 작은 블록 크기로 쓸 수 있으므로 전체 백업이 전송되기 전에 SQL Server가 50,000블록 제한에 도달할 수 있습니다. 특히 차등 또는 비압축 백업을 사용하는 경우 블록 제한을 피하기 위해 스트라이프 백업(200GB보다 작은 경우에도)을 수행합니다.
Transact-SQL, SMO, PowerShell cmdlet 또는 SQL Server Management Studio 백업 또는 복원 마법사를 사용하여 백업 또는 복원 문을 실행할 수 있습니다.
Azure Storage 계정에 백업은 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에서는 지원되지 않습니다.백업 세트 옵션 지정 -
RETAINDAYS
와EXPIREDATE
는 지원되지 않습니다.SQL Server는 백업 디바이스 이름이 최대 259자로 제한됩니다. BACKUP TO URL은 URL
https://.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로 설정합니다.
Azure Blob Storage에서 지원되는 인수 및 문
Azure Blob Storage 백업/복원 문 지원
Backup/Restore 문 | 지원 여부 | 예외 | 설명 |
---|---|---|---|
백업 | Y | BLOCKSIZE 및 MAXTRANSFERSIZE는 블록 Blob에 대해 지원됩니다. 페이지 블롭을 지원하지 않습니다. | 블록 Blob에 백업하려면 SQL Server 자격 증명에 저장된 공유 액세스 서명이 필요합니다. 페이지 Blob에 백업하려면 SQL Server 자격 증명에 저장된 스토리지 계정 키가 필요하며 WITH CREDENTIAL 인수를 지정해야 합니다. |
복원 | Y | SQL Server 자격 증명을 정의해야 하며 스토리지 계정 키를 비밀로 사용하여 SQL Server 자격 증명을 정의할 경우 WITH CREDENTIAL 인수를 지정해야 합니다. | |
FILELISTONLY를 복원 | Y | SQL Server 자격 증명을 정의해야 하며 스토리지 계정 키를 비밀로 사용하여 SQL Server 자격 증명을 정의할 경우 WITH CREDENTIAL 인수를 지정해야 합니다. | |
RESTORE HEADERONLY (헤더만 복원) | Y | SQL Server 자격 증명을 정의해야 하며 스토리지 계정 키를 비밀로 사용하여 SQL Server 자격 증명을 정의할 경우 WITH CREDENTIAL 인수를 지정해야 합니다. | |
레이블만 복원 | Y | SQL Server 자격 증명을 정의해야 하며 스토리지 계정 키를 비밀로 사용하여 SQL Server 자격 증명을 정의할 경우 WITH CREDENTIAL 인수를 지정해야 합니다. | |
복원 검증 전용 (RESTORE VERIFYONLY) | Y | SQL Server 자격 증명을 정의해야 하며 스토리지 계정 키를 비밀로 사용하여 SQL Server 자격 증명을 정의할 경우 WITH CREDENTIAL 인수를 지정해야 합니다. | |
RESTORE REWINDONLY (복원 및 재생 전용) | - |
백업 문에 대한 구문 및 일반 정보는 BACKUP을 참조하세요.
복원 문에 대한 구문 및 일반 정보는 RESTORE 문을 참조하세요.
Azure Blob Storage 백업 인수 지원
인수 | 지원 여부 | 예외 | 설명 |
---|---|---|---|
데이터베이스 | Y | ||
로그 | Y | ||
TO(URL) | Y | DISK 및 TAPE와 달리 URL은 논리 이름을 지정하거나 만드는 것을 지원하지 않습니다. | 이 인수는 백업 파일의 URL 경로를 지정하는 데 사용됩니다. |
미러링하기 | Y | ||
WITH 옵션: |
|||
자격 증명 | Y | WITH CREDENTIAL은 스토리지 계정 키를 비밀로 사용하여 SQL Server 자격 증명을 정의한 경우 BACKUP TO URL 옵션을 사용하여 Azure Blob Storage에 백업할 때만 지원됩니다. | |
파일 스냅샷 | Y | ||
암호화 | Y | 인수를 WITH ENCRYPTION 지정하면 SQL Server File-Snapshot Backup은 백업을 수행하기 전에 전체 데이터베이스가 TDE로 암호화되었는지 확인하고, 이 경우 데이터베이스의 TDE에 지정된 알고리즘을 사용하여 파일-스냅샷 백업 파일 자체를 암호화합니다. 전체 데이터베이스의 데이터베이스에 있는 모든 데이터가 암호화되지 않은 경우 백업이 실패합니다(예: 암호화 프로세스가 아직 완료되지 않음). |
|
미분 | Y | ||
복사_전용 | Y | ||
압축|비압축 | Y | 파일 스냅샷 백업에 지원되지 않습니다. | |
설명 | Y | ||
이름 | Y | ||
만료일자 | 보존일수 | - | ||
NOINIT | INIT | - | Blob에 추가할 수 없습니다. 백업을 덮어쓰려면 인수를 WITH FORMAT 사용합니다. 하지만 파일-스냅샷 백업을 사용할 때는 WITH FILE_SNAPSHOT 인수를 사용하고, WITH FORMAT 인수는 원래 백업과 연결되지 않은 독립된 파일-스냅샷을 남기지 않도록 허용되지 않습니다. |
|
NOSKIP | 건너뛰다 | - | ||
NOFORMAT | 판 | Y | 지정하지 않으면 WITH FORMAT 기존 Blob으로 수행된 백업이 실패합니다. 지정된 경우 WITH FORMAT 기존 Blob을 덮어씁니다. 그러나 WITH FILE_SNAPSHOT 인수를 사용하여 파일-스냅샷 백업을 사용할 때, 원래 파일-스냅샷 백업으로 생성된 고아 파일-스냅샷이 남는 것을 방지하기 위해 FORMAT 인수는 허용되지 않습니다. 하지만 파일-스냅샷 백업을 사용할 때는 WITH FILE_SNAPSHOT 인수를 사용하고, WITH FORMAT 인수는 원래 백업과 연결되지 않은 독립된 파일-스냅샷을 남기지 않도록 허용되지 않습니다. |
|
미디어 설명 | Y | ||
미디안네임 | Y | ||
블록 크기 | Y | 페이지 Blob에 지원되지 않습니다. 블록 Blob에 지원됩니다. | 블록 Blob에 허용된 50,000개의 블록 사용을 최적화하려면 BLOCKSIZE=65536을 사용하는 것이 좋습니다. |
버퍼 수 | Y | ||
최대 전송 크기 | Y | 페이지 Blob에 지원되지 않습니다. 블록 Blob에 지원됩니다. | 기본값은 1048576입니다. 값의 범위는 최대 4MB이며 65536바이트씩 증가합니다. 블록 Blob에 허용된 50,000개의 블록 사용을 최적화하려면 MAXTRANSFERSIZE=4194304를 사용하는 것이 좋습니다. |
노체크섬 | 체크섬 | Y | ||
오류 발생 시 중지 | 오류 발생 후 계속 | Y | ||
통계 | Y | ||
REWIND | NOREWIND | - | ||
언로드 | 누언로드 | - | ||
NORECOVERY | 대기 모드 | Y | ||
NO_TRUNCATE | Y |
백업 인수에 대한 자세한 내용은 BACKUP을 참조 하세요.
Azure Blob Storage 복원 인수 지원
인수 | 지원 여부 | 예외 | 설명 |
---|---|---|---|
데이터베이스 | Y | ||
로그 | Y | ||
출처 (URL) | Y | FROM URL 인수는 백업 파일의 URL 경로를 지정하는 데 사용됩니다. | |
WITH 옵션: | |||
자격 증명 | Y | WITH CREDENTIAL은 RESTORE FROM URL 옵션을 사용하여 Microsoft Azure Blob Storage에서 복원할 때만 지원됩니다. | |
부분적인 | Y | ||
RECOVERY | NORECOVERY | 대기 모드 | Y | ||
기록 불러오기 | Y | ||
움직이다 | Y | ||
교체하다 | Y | ||
다시 시작 | Y | ||
제한된 사용자 | Y | ||
파일 | - | ||
비밀번호 | Y | ||
미디안네임 | Y | ||
미디어비밀번호 | Y | ||
블록 크기 | Y | ||
버퍼 수 | - | ||
최대 전송 크기 | - | ||
체크섬 | 체크섬 없음 | Y | ||
오류 발생 시 중지 | 오류 발생 후 계속 | Y | ||
FILESTREAM | Y | 스냅샷 백업에 지원되지 않습니다. | |
통계 | Y | ||
REWIND | NOREWIND | - | ||
언로드 | 누언로드 | - | ||
유지_복제 | Y | ||
KEEP_CDC | Y | ||
브로커 활성화 (ENABLE_BROKER) | 브로커 대화 오류 (ERROR_BROKER_CONVERSATIONS) | 새 브로커 (NEW_BROKER) | Y | ||
정지 | 정지표시 | 표시전 정지 | Y |
복원 인수에 대한 자세한 내용은 RESTORE 문 - 인수를 참조하세요.
SSMS를 사용하여 백업
SQL Server 자격 증명을 사용하여 SQL Server Management Studio의 백업 작업을 통해 URL에 데이터베이스를 백업할 수 있습니다.
참고 항목
SQL Server 파일-스냅샷 백업을 만들거나 기존 미디어 세트를 덮어쓰려면 SQL Server Management Studio의 백업 작업 대신 Transact-SQL, PowerShell 또는 C#을 사용해야 합니다.
다음 단계에서는 Azure Storage로 백업할 수 있도록 SQL Server Management Studio에서 변경된 데이터베이스 백업 작업에 대해 설명합니다.
개체 탐색기에서 SQL Server 데이터베이스 엔진의 인스턴스에 연결하고 해당 인스턴스를 확장합니다.
데이터베이스를 확장하고 원하는 데이터베이스를 마우스 오른쪽 단추로 클릭한 다음 태스크를 가리키고 백업...을 선택합니다.
대상 섹션의 일반 페이지에서 URL 옵션은 백업 대상: 드롭다운 목록에서 사용할 수 있습니다. URL 옵션은 Microsoft Azure Storage에 백업을 만드는 데 사용됩니다. 추가를 선택하면 백업 대상 선택 대화 상자가 열립니다.
Azure Storage 컨테이너: 백업 파일을 저장할 Microsoft Azure Storage 컨테이너의 이름입니다. 드롭다운 목록에서 기존 컨테이너를 선택하거나 컨테이너를 수동으로 입력합니다.
공유 액세스 정책: 수동으로 입력한 컨테이너에 대한 공유 액세스 서명을 입력합니다. 기존 컨테이너를 선택한 경우에는 이 필드를 사용할 수 없습니다.
백업 파일: 백업 파일의 이름입니다.
새 컨테이너: 공유 액세스 서명이 없는 기존 컨테이너를 등록하는 데 사용됩니다. Microsoft Azure 구독에 연결(백업 TO URL)을 참조하세요.
참고 항목
추가는 단일 미디어 세트에 대해 여러 백업 파일과 스토리지 컨테이너를 지원합니다.
URL을 대상으로 선택하는 경우 미디어 옵션 페이지의 특정 옵션이 비활성화됩니다. 다음 문서에서는 데이터베이스 백업 대화 상자에 대한 자세한 정보를 제공합니다.
유지 관리 계획으로 백업
앞에서 설명한 백업 작업과 유사하게 SQL Server Management Studio의 유지 관리 계획 마법사에는 대상 옵션 중 하나로 URL과 SQL 자격 증명과 같이 Azure 스토리지로 백업하는 데 필요한 기타 지원 개체가 포함되어 있습니다. 자세한 내용은 Using Maintenance Plan Wizard의 Define Backup Tasks를 참조하세요.
참고 항목
공유 액세스 토큰을 사용하여 스트라이프 백업 세트, SQL Server 파일-스냅샷 백업 또는 SQL 자격 증명을 만들려면 유지 관리 계획 마법사의 백업 작업 대신 Transact-SQL, PowerShell 또는 C#을 사용해야 합니다.
SSMS로 복원
데이터베이스 복원 작업에는 복원할 디바이스로 URL이 포함됩니다. 다음 단계에서는 복원 작업을 사용하여 Azure Blob Storage에서 복원하는 방법을 설명합니다.
데이터베이스를 마우스 오른쪽 단추로 클릭하고 데이터베이스 복원...을 선택합니다.
일반 페이지의 원본 섹션에서 디바이스를 선택합니다.
찾아보기(...) 단추를 선택하여 백업 디바이스 선택 대화 상자를 엽니다.
백업 미디어 유형 드롭다운 목록에서 URL을 선택합니다. 추가 를 선택하여 백업 파일 위치 선택 대화 상자를 엽니다.
Azure Storage 컨테이너: 백업 파일이 포함된 Microsoft Azure Storage 컨테이너의 정규화된 이름입니다. 드롭다운 목록에서 기존 컨테이너를 선택하거나 정규화된 컨테이너 이름을 수동으로 입력합니다.
공유 액세스 서명: 지정된 컨테이너에 대한 공유 액세스 서명을 입력하는 데 사용됩니다.
추가하다: 공유 액세스 서명이 없는 기존 컨테이너를 등록하는 방법입니다. Microsoft Azure 구독에 연결(백업 TO URL)을 참조하세요.
확인: SQL Server가 제공된 SQL 자격 증명 정보를 사용하여 Microsoft Azure Storage에 연결하고 Microsoft Azure에서 백업 파일 찾기 대화 상자를 엽니다. 스토리지 컨테이너에 있는 백업 파일이 이 페이지에 표시됩니다. 복원하는 데 사용할 파일을 선택하고 확인을 선택합니다. 그러면 백업 디바이스 선택 대화 상자로 돌아가서 이 대화 상자에서 확인을 선택하면 기본 복원 대화 상자로 돌아가서 복원을 완료할 수 있습니다.
코드 예제
이 섹션에는 다음 예제가 포함되어 있습니다.
참고 항목
Azure Blob Storage에서 SQL Server 2016을 사용하는 방법에 대한 자습서는 자습서: SQL Server에서 Azure Blob Storage 사용
공유 액세스 서명 만들기
다음 예제에서는 새로 만든 컨테이너에서 SQL Server 자격 증명을 만드는 데 사용할 수 있는 공유 액세스 서명을 만듭니다. 이 스크립트는 저장된 액세스 정책에 연결된 공유 액세스 서명을 만듭니다. 자세한 내용은 공유 액세스 서명, 1부: SAS 모델 이해를 참조하세요. 또한 스크립트는 SQL Server에 자격 증명을 만드는 데 필요한 T-SQL 명령을 작성합니다.
참고 항목
이 예제에는 Microsoft 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 자격 증명을 만듭니다. 다음 중 하나를 수행합니다.
공유 액세스 서명 사용
이전 스크립트를 실행하여 공유 액세스 서명을 만든 경우 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>';
스토리지 계정 ID 및 액세스 키 사용
IF NOT EXISTS (SELECT * FROM sys.credentials WHERE name = '<mycredentialname>') CREATE CREDENTIAL [<mycredentialname>] WITH IDENTITY = '<mystorageaccountname>', SECRET = '<mystorageaccountaccesskey>';
전체 데이터베이스 백업 수행
다음 예제에서는 Azure Blob Storage로 AdventureWorks2022
데이터베이스의 전체 데이터베이스 백업을 수행합니다. 다음 샘플 중 하나를 사용합니다.
공유 액세스 서명을 사용하는 끝 URL
BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak'; GO
스토리지 계정 ID 및 액세스 키를 사용하는 끝 URL
BACKUP DATABASE AdventureWorks2022 TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/AdventureWorks2022.bak' WITH CREDENTIAL = '<mycredentialname>', COMPRESSION, STATS = 5; GO
STOPAT를 사용하여 지정 시간으로 복원
다음 예에서는 지정 시간의 상태로 AdventureWorks2022
샘플 데이터베이스를 복원하고 복원 작업을 보여 줍니다.
공유 액세스 서명을 사용하는 시작 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
관련 콘텐츠
- Microsoft Azure Blob Storage 모범 사례 및 문제 해결 대한 URL로 SQL Server 백업
- 백업 및 복원 : 시스템 데이터베이스(SQL Server)
- 자습서: Azure Blob Storage를 SQL Server와 함께 사용하기