적용 대상:SQL Server
이 문서는 Azure 포털에서 Azure Arc로 활성화된 SQL Server 인스턴스를 Azure VM의 SQL Server로 마이그레이션하기 위한 환경을 준비하는 데 도움이 됩니다.
메모
사전 요구 사항
Azure 포털을 통해 Azure VM의 SQL Server로 데이터베이스를 마이그레이션하려면 다음 사전 조건이 필요합니다.
- 활성 Azure 구독입니다. 아직 없는 경우 무료 계정을 만들 수 있습니다.
- Azure Arc로 활성화된 SQL Server의 인스턴스이며, 최신 버전의 Azure 확장을 SQL Server에 사용합니다. 확장을 업그레이드하려면 확장 업그레이드를 참조하세요.
- Azure VM에서 기존 SQL Server 사용하도록 선택하거나 마이그레이션 프로세스 중에 대상 SQL Server VM을 프로비전할 수 있습니다. 기존 SQL Server VM을 사용하도록 선택한 경우, SQL IaaS 에이전트 확장
등록되어야 합니다 .
지원되는 SQL Server 버전
SQL Server VM 마이그레이션은 Windows 및 Linux의 모든 SQL Server 버전에서 작동합니다.
다음 표에서는 마이그레이션에 지원되는 최소 SQL Server 버전을 나열합니다.
| SQL Server 버전 | 최소 필수 서비스 업데이트 |
|---|---|
| SQL Server 2025(17.x) | SQL Server 2025 RTM(17.0.1000.7) |
| SQL Server 2022(16.x) | SQL Server 2022 RTM(16.0.1000.6) |
| SQL Server 2019(15.x) | SQL Server 2019 RTM(15.0.2000.5) |
| SQL Server 2017(14.x) | SQL Server 2017 RTM(14.0.1000.169) |
| SQL Server 2016(13.x) | SQL Server 2016 RTM(13.0.1400.361) |
| SQL Server 2014(12.x) | SQL Server 2014 RTM(12.0.2000.8) |
| SQL Server 2012(11.x) | SQL Server 2012 RTM(11.0.2100.60) |
Permissions
이 섹션에서는 Azure 포털을 통해 Azure VM에서 SQL Server 데이터베이스를 마이그레이션하는 데 필요한 권한을 설명합니다.
원본 SQL Server 인스턴스에서 다음 권한이 필요합니다.
- 최소 권한을 사용하도록 설정하면 데이터베이스 마이그레이션 프로세스 중에 필요에 따라 sysadmin과 같은 필요한 권한이 부여됩니다.
- 최소 권한을 사용할 수 없는 경우 원본 SQL Server 인스턴스에 대한 sysadmin 권한이 필요합니다.
마이그레이션을 수행하려면 대상 Azure VM에서 Virtual Machine Contributor 역할이 필요합니다.
스토리지 계정 만들기
Azure Blob Storage 계정을 SQL Server 인스턴스와 Azure VM의 SQL Server 간의 백업 파일에 대한 중간 스토리지로 사용합니다. 스토리지 계정은 Azure VM 대상의 SQL Server 동일한 Azure 구독 및 지역에 있어야 합니다.
스토리지 계정 내에서 새 스토리지 계정 및 BLOB 컨테이너를 만들려면 다음을 수행합니다.
-
스토리지 계정을 만듭니다.
- Azure 포털에서 Storage 계정 검색하고 Create 선택합니다.
- 기본 사항 탭에서 구독 및 리소스 그룹을 선택합니다. Azure VM의 SQL Server 대상과 지역이 동일해야 합니다.
- 기본 설정 스토리지 유형을 비워 둡니다.
- 나머지 탭에 대한 기본 설정을 사용하고 검토 + 만들기를 선택합니다.
- 유효성 검사를 통과한 후 만들기를 선택합니다.
- 스토리지 계정 내에 BLOB 컨테이너를 만듭니다.
- Azure 포털에서 새 스토리지 계정으로 이동합니다.
- 데이터 스토리지에서 컨테이너를 선택합니다.
- 컨테이너 추가를 사용하여 새 컨테이너 창을 엽니다.
- 컨테이너의 이름을 입력하고, 옵션을 기본값으로 두고, 만들기 를 선택하여 컨테이너를 만듭니다.
- (선택 사항) Azure Storage가 방화벽 뒤에 있는 경우, SQL Server VM이 프로비전된 후 Azure Blob Storage에는 추가 구성이 필요합니다. 이름 VM을 사용하여 서브넷에 대한 위임을 구성합니다.
Azure Blob Storage 권한 부여
Azure Arc SQL Server VM 마이그레이션은 관리 ID를 사용하여 Azure Blob Storage 인증합니다.
다음 권한을 부여해야 합니다.
- 마이그레이션 프로세스 중에 백업을 저장하려는 스토리지 계정에 대한 액세스 권한을 사용자에게 부여합니다.
- 스토리지 계정이 포함된 리소스 그룹에 대한 액세스 권한을 사용자에게 부여합니다.
- SQL Server VM이 프로비전된 후 스토리지 계정에 관리 ID 액세스 권한을 부여하십시오.
스토리지 계정에 대한 사용자 액세스 권한 부여
마이그레이션 프로세스 중에 데이터베이스 백업에 액세스하려면 Azure 포털에 로그인하고 백업이 포함된 스토리지 계정에 대해 Storage Blob Data Reader 역할로 마이그레이션을 수행하는 사용자를 할당합니다.
역할을 할당하려면 다음 단계를 수행합니다.
Azure 포털에서 스토리지 계정이 포함된 리소스 그룹으로 이동합니다.
리소스 메뉴에서 액세스 제어(IAM)를 선택합니다.
+ 추가를 사용하여 역할 할당 추가를 선택하고 역할 할당 추가 창을 엽니다.
Storage Blob 데이터 판독기 역할을 검색하고 선택합니다. 그런 후에 다음을 선택합니다.
Azure 포털의 스토리지 계정에 대한 IAM 페이지에서 Storage Blob 데이터 판독기 역할을 찾는 스크린샷. + 멤버를 선택하여 구성원 선택 창을 열고 마이그레이션을 수행하는 사용자의 사용자 계정을 검색합니다. 여러 사람이 데이터를 마이그레이션하는 경우 모든 사용자에게 이 액세스 권한을 부여합니다. 사용자 계정을 선택한 다음 Select 를 사용하여 선택 항목을 저장합니다. 사용자, 그룹 또는 서비스 주체에 대한 액세스 권한을 할당하는 옵션을 선택합니다.
검토 + 할당을 선택하여 검토 + 할당 탭으로 이동한 다음 검토 + 할당을 다시 선택하여 역할 할당을 완료합니다.
리소스 그룹에 대한 사용자 액세스 권한 부여
마이그레이션 프로세스 중에 데이터베이스 백업에 액세스하려면 Azure 포털에 로그인하고 마이그레이션을 수행하는 사용자에게 스토리지 계정이 포함된 리소스 그룹에 Reader 역할을 할당해야 합니다.
역할을 할당하려면 다음 단계를 수행합니다.
Azure 포털에서 스토리지 계정이 포함된 리소스 그룹으로 이동합니다.
리소스 메뉴에서 액세스 제어(IAM)를 선택합니다.
+ 추가를 사용하여 역할 할당 추가를 선택하고 역할 할당 추가 창을 엽니다.
읽기 권한자 역할을 검색하고 선택합니다. 그런 후에 다음을 선택합니다.
Azure 포털에서 리소스 그룹에 대한 IAM 페이지에서 Reader 역할을 찾는 스크린샷. + 멤버를 선택하여 구성원 선택 창을 열고 마이그레이션을 수행하는 사용자의 사용자 계정을 검색합니다. 여러 사람이 데이터를 마이그레이션하는 경우 모든 사용자에게 이 액세스 권한을 부여합니다. 사용자 계정을 선택한 다음 Select 를 사용하여 선택 항목을 저장합니다. 사용자, 그룹 또는 서비스 주체에 대한 액세스를 할당하는 옵션을 선택한 다음 Next를 사용하여 계속합니다.
배정 유형 탭에서 할당 유형을활성으로 설정하고 할당 기간을영구로 설정합니다.
검토 + 할당을 선택하여 검토 + 할당 탭으로 이동한 다음 검토 + 할당을 다시 선택하여 역할 할당을 완료합니다.
스토리지 계정에 관리 ID 액세스 권한 부여
SQL Server VM이 프로비전되면 마이그레이션 프로세스 중에 Azure Blob Storage 계정에 액세스할 수 있도록 SQL Server VM의 관리 ID를 Storage Blob Data Reader 역할에 할당해야 합니다.
먼저 SQL Server VM에서 사용하는 관리 ID 종류를 결정해야 합니다. 이렇게 하려면 다음 단계를 따르십시오.
- Azure 포털에서 Virtual Machines 리소스로 이동합니다.
-
보안에서 ID를 선택하여 ID 창을 엽니다.
시스템 할당 ID 또는 사용자 할당 ID 사용 중에서 선택합니다.
- 시스템 할당 탭에서 상태 토글을 사용하여 시스템 할당 ID를 사용하도록 설정할 수 있습니다(아직 사용하도록 설정되지 않은 경우). 시스템 할당 ID가 활성화된 경우, Azure 역할 할당을 선택하여 Azure 역할 할당 페이지로 이동한 다음 +역할 할당 추가(미리 보기)를 사용하여 SQL Server VM의 시스템 할당 ID에 Storage Blob Data Reader 권한을 부여합니다. 이때 Storage를 Scope로 선택 후, 리소스를 선택합니다.
- 사용자 할당 탭에서 SQL Server VM에 연결된 사용자 할당 ID 목록을 볼 수 있습니다. 새 사용자 할당 ID를 추가하려면 + 사용자 할당 ID 추가를 선택한 다음, 구독에서 기존 사용자 할당 ID를 선택하여 SQL Server VM에 연결합니다. 다음 단계에서 필요하므로 Azure Blob Storage 인증에 사용할 사용자 할당 ID의 이름을 기록해 둡다.
사용자가 할당한 관리 ID에 대한 액세스 권한을 스토리지 계정에 부여하려면 다음 단계를 수행합니다.
- 마이그레이션에 사용하려는 Azure 포털의 Azure Blob Storage 계정으로 이동합니다.
- 리소스 메뉴에서 액세스 제어(IAM)를 선택합니다.
- + 추가를 사용하여 역할 할당 추가를 선택하고 역할 할당 추가 창을 엽니다.
- Storage Blob 데이터 판독기 역할을 검색하고 선택합니다. 그런 후에 다음을 선택합니다.
- 액세스 할당에서 관리 ID 옵션을 확인합니다.
- 구성원 선택 창을 열려면 [구성원 선택]을 사용합니다.
- 관리 ID에서 사용자 할당 관리 ID를 선택합니다.
- Primary identity 이름을 SQL Server VM의 Identity 페이지에서 이전에 기록한 후 검색하고 선택합니다.
- 선택 항목을 저장하려면 [선택 ]을 사용합니다.
- 검토 + 할당을 선택하여 검토 + 할당 탭으로 이동한 다음 검토 + 할당을 다시 선택하여 역할 할당을 완료합니다.
Blob Storage 계정에 백업 업로드
Blob 컨테이너가 준비되고 SQL Server VM이 컨테이너에 액세스할 수 있음을 확인한 경우 Azure Blob Storage 계정에 백업 업로드를 시작할 수 있습니다. 모든 백업이 스토리지 계정에 업로드되면 마이그레이션을 진행할 준비가 된 것입니다.
백업을 Azure 업로드하려면 다음을 수행합니다.
다음 모범 사례를 고려합니다.
- 백업 파일의 크기를 줄이고 손상된 데이터베이스의 마이그레이션을 방지하기 위해
COMPRESSION및CHECKSUM옵션을 사용하여 백업을 수행하십시오. - 더 작은 일괄 처리로 백업을 수행합니다.
- 병렬 업로드 스레드를 사용합니다.
- 마지막 백업 파일을 가능한 한 작게 만듭니다.
- 동일한 Azure Blob Storage 컨테이너를 사용하여 여러 데이터베이스를 마이그레이션하려면 개별 데이터베이스에 대한 모든 백업 파일을 컨테이너 내의 별도 폴더에 배치합니다. 각 데이터베이스 폴더에 대해 플랫 파일 구조를 사용합니다. 데이터베이스 폴더 내에 폴더를 중첩하는 것은 지원되지 않습니다.
SQL Server 인스턴스에서 백업 수행
이 섹션의 단계에서는 로컬로 백업하는 방법을 보여 주지만 URL에 직접 백업할 수도 있습니다.
전체 복구 모드로 마이그레이션하려는 데이터베이스에서 로그 백업을 허용하도록 설정합니다.
-- To permit log backups, before the full database backup, modify the database to use the full recovery
USE master;
ALTER DATABASE SampleDB
SET RECOVERY FULL;
GO
기존 백업이 아직 없는 경우 데이터베이스의 전체, 차등 및 로그 백업을 로컬 스토리지에 수동으로 만들려면 다음 샘플 T-SQL 스크립트를 사용합니다.
CHECKSUM 는 필요하지 않지만 손상된 데이터베이스 마이그레이션을 방지하고 복원 시간을 단축하는 것이 좋습니다.
다음 예에서는 로컬 디스크에 전체 데이터베이스 백업을 수행합니다.
-- Take full database backup to local disk
BACKUP DATABASE [SampleDB]
TO DISK = 'C:\BACKUP\SampleDB_full.bak'
WITH INIT, COMPRESSION, CHECKSUM;
GO
다음 예에서는 로컬 디스크에 차등 백업을 수행합니다.
-- Take differential database backup to local disk
BACKUP DATABASE [SampleDB]
TO DISK = 'C:\BACKUP\SampleDB_diff.bak'
WITH DIFFERENTIAL, COMPRESSION, CHECKSUM;
GO
다음 예에서는 로컬 디스크에 트랜잭션 로그 백업을 수행합니다.
-- Take transactional log backup to local disk
BACKUP LOG [SampleDB]
TO DISK = 'C:\BACKUP\SampleDB_log.trn'
WITH COMPRESSION, CHECKSUM;
GO
Blob Storage 계정에 백업 복사
백업이 준비되고 데이터베이스를 SQL Server VM으로 마이그레이션하려면 다음 방법을 사용하여 기존 백업을 Blob Storage 계정에 복사합니다.
- AzCopy 다운로드하여 설치합니다.
- Azure Storage Explorer 다운로드하여 설치합니다.
- Azure 포털에서 Storage Explorer를 사용합니다.
메모
동일한 Azure Blob Storage 컨테이너를 사용하여 여러 데이터베이스를 마이그레이션하려면 개별 데이터베이스에 대한 모든 백업 파일을 컨테이너 내의 별도 폴더에 배치합니다. 각 데이터베이스 폴더에 대해 플랫 파일 구조를 사용합니다. 데이터베이스 폴더 내에 폴더를 중첩하는 것은 지원되지 않습니다.
SQL Server VM 스토리지 액세스 유효성 검사
SQL Server VM이 Blob Storage 계정에 액세스할 수 있는지 확인합니다.
먼저 full_0_0.bak 같은 데이터베이스 백업을 Azure Blob Storage 컨테이너에 업로드합니다.
다음으로, SQL Server VM에 연결하고 샘플 테스트 쿼리를 실행하여 SQL Server VM이 컨테이너의 백업에 액세스할 수 있는지 확인합니다.
SAS 토큰을 사용하여 스토리지 계정에 인증하는 경우 <sastoken> SAS 토큰으로 바꾸고 SQL Server VM에서 다음 쿼리를 실행합니다.
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/databases]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<sastoken>';
RESTORE HEADERONLY
FROM URL = 'https://<mystorageaccountname>.blob.core.windows.net/<containername>/full_0_0.bak';
SQL IaaS 에이전트 확장에 SQL Server VM 등록
대상 SQL Server VM이 이미 있는 경우 Azure 포털에서 마이그레이션 대상으로 선택하기 전에 SQL IaaS 에이전트 확장 등록해야 합니다. 대상 SQL Server VM이 아직 없는 경우 마이그레이션 프로세스 중에 새 VM을 프로비전할 수 있으며 SQL IaaS 에이전트 확장에 자동으로 등록됩니다.
제한점
Azure 포털을 통해 Azure VM의 SQL Server로 데이터베이스를 마이그레이션할 때 다음과 같은 제한 사항을 고려합니다.
- 단일 데이터베이스를 마이그레이션하는 경우 데이터베이스 백업을 데이터베이스 폴더 내의 플랫 파일 구조(컨테이너 루트 폴더 포함)에 배치해야 합니다. 중첩이 지원되지 않으므로 이러한 폴더를 중첩할 수 없습니다.
- 동일한 Azure Blob Storage 컨테이너를 사용하여 여러 데이터베이스를 마이그레이션하는 경우 다른 데이터베이스에 대한 백업 파일을 컨테이너 내의 별도의 폴더에 배치해야 합니다.
- DMS를 사용하여 Azure VM에서 대상 SQL Server 기존 데이터베이스를 덮어쓸 수 없습니다.
- SQL Server 마이그레이션은 원본 토폴로지와 일치하도록 대상에서 고가용성 및 재해 복구 구성을 지원하지 않습니다.
- 다음 서버 개체는 지원되지 않습니다.
- SQL Server Agent 작업
- 자격 증명
- SSIS(SQL Server Integration Services) 패키지
- 서버 감사
- DMS를 사용한 데이터베이스 마이그레이션에는 ADF(Azure Data Factory)에서 만든 기존 자체 호스팅 통합 런타임을 사용할 수 없습니다.
- 대상 버전이 SQL Server 2008 이상인 VM은 Azure VM에서 SQL Server 마이그레이션할 때 지원되지 않습니다.
- 마이그레이션을 위해서는 SQL IaaS 에이전트 확장에 등록해야 합니다. 확장은 기본 인스턴스 또는 단일 명명된 인스턴스만 지원합니다.
- 하나 이상의 마이그레이션을 동시에 사용하여 최대 100개의 데이터베이스를 대상과 동일한 Azure VM으로 마이그레이션할 수 있습니다. 또한 데이터베이스가 100개인 마이그레이션이 완료되면 30분 이상 기다린 후 대상과 Azure VM에서 동일한 SQL Server 새 마이그레이션을 시작합니다. 추가로 각 데이터베이스에 대한 모든 마이그레이션 작업(마이그레이션 시작, 중단)은 순차적으로 몇 분 정도 소요됩니다. 예를 들어 100개의 데이터베이스를 마이그레이션하려면 마이그레이션 큐를 만드는 데 약 200분(2 x 100) 분, 100개 데이터베이스를 모두 잘라내는 데 약 100분(1 x 100)이 걸릴 수 있습니다(백업 및 복원 시간 제외). 따라서 데이터베이스 수가 증가함에 따라 마이그레이션 속도가 느려집니다. 엄격한 마이그레이션 테스트에 따라 더 긴 마이그레이션 기간을 미리 예약하거나 많은 수의 데이터베이스를 Azure VM에서 SQL Server 마이그레이션할 때 일괄 처리로 분할해야 합니다.
- VM이 백업 파일에 액세스할 수 있도록 Azure Storage 계정의 네트워킹/방화벽을 구성하는 것 외에도 스토리지 계정에 대한 아웃바운드 연결을 허용하도록 Azure VM에서 SQL Server 네트워킹/방화벽을 구성해야 합니다.
- SQL Server 마이그레이션이 진행되는 동안 대상 Azure VM을 계속 켜야 합니다. 또한 새 마이그레이션을 만들 때 마이그레이션 진행 중인 마이그레이션을 장애 조치(failover)하거나 취소합니다.