적용 대상:Azure SQL Database
Azure SQL Managed Instance
.bacpac 파일을 사용하여 SQL Server 데이터베이스를 Azure SQL Database 또는 SQL Managed Instance 가져올 수 있습니다. Azure Blob Storage에 저장된 BACPAC 파일(표준 스토리지에만 해당) 또는 온-프레미스 위치의 로컬 스토리지에서 데이터를 가져올 수 있습니다. 더 빠른 리소스를 더 많이 제공하여 가져오기 속도를 높이려면 가져오기 프로세스 중에 데이터베이스를 더 높은 서비스 계층 및 컴퓨팅 크기로 확장합니다. 그런 다음, 가져오기가 성공하면 크기를 축소할 수 있습니다.
참고
프라이빗 링크를 사용하여 Azure SQL Database 가져오거나 내보냅니다 미리 보기로 제공됩니다.
Azure 포털 사용
Azure 포털의 BACPAC 파일에서 가져오거나 계속 읽는 방법을 보려면 이 비디오를 시청하세요.
- Azure 포털은 Azure Blob Storage에 저장된 BACPAC 파일에서 만 Azure SQL Database의 단일 데이터베이스를 만들 수 있습니다.
- BACPAC 파일에서 Azure SQL Managed Instance로 데이터베이스를 마이그레이션하려면 SQL Server Management Studio 또는
SqlPackage명령줄 유틸리티를 사용합니다. Azure 포털 및 Azure PowerShell 현재 지원되지 않습니다.
경고
SqlPackage에서 생성된 150GB가 넘는 BACPAC 파일은 Azure 포털이나 Azure PowerShell에서 임포트할 때 File contains corrupted data 상태인 오류 메시지가 발생하여 임포트에 실패할 수 있습니다. 이는 알려진 문제의 결과이며 해결 방법은 명령줄 유틸리티를 SqlPackage 사용하여 BACPAC 파일을 가져오는 것입니다. 자세한 내용은 SqlPackage 및 문제 로그를 참조하세요.
참고
Azure 포털 또는 PowerShell을 통해 제출된 가져오기/내보내기 요청을 처리하는 컴퓨터는 DacFX(Data-Tier Application Framework)에서 생성된 임시 파일뿐만 아니라 BACPAC 파일을 저장해야 합니다. 필요한 디스크 공간은 동일한 크기의 데이터베이스 간에도 크게 다르며, 데이터베이스 크기의 최대 3배까지 디스크 공간이 필요할 수 있습니다. 가져오기/내보내기 요청을 실행하는 머신에는 450GB의 로컬 디스크 공간만 있습니다. 따라서 일부 요청은 There is not enough space on the disk 오류로 실패할 수 있습니다. 이 경우 해결 방법은 로컬 디스크 공간이 충분한 컴퓨터에서 SqlPackage 명령줄 유틸리티를 실행하는 것입니다. 이 문제를 방지하려면 SqlPackage 명령줄 유틸리티를 사용하여 150GB보다 큰 데이터베이스를 가져오거나 내보내는 것이 좋습니다.
Azure 포털을 사용하여 BACPAC 파일에서 새 단일 데이터베이스로 가져오려면 적절한 서버 페이지를 열고 도구 모음에서 Import 데이터베이스 선택합니다.
Azure 포털의 화면 캡처, 논리 서버 개요 페이지, 데이터베이스 가져오기가 선택됨. 백업 선택을 선택합니다. 데이터베이스를 호스팅하는 스토리지 계정을 선택한 다음 가져올 BACPAC 파일을 선택합니다.
새 데이터베이스 크기(일반적으로 원본과 동일)를 지정하고 대상 SQL Server 자격 증명을 제공합니다. Azure SQL Database 새 데이터베이스에 대한 가능한 값 목록은 데이터베이스 만들기 참조하세요.
확인을 선택합니다.
가져오기 진행률을 모니터링하려면 데이터베이스의 서버 페이지를 열고, 설정 아래에서 가져오기/내보내기 기록을 선택합니다. 성공하면 가져오기가 완료됨 상태가 됩니다.
데이터베이스가 서버에서 라이브 상태인지 확인하려면 SQL 데이터베이스를 선택하고 새 데이터베이스가 온라인 상태인지 확인합니다.
관리 ID 인증을 사용하여 가져오기(미리 보기)
Azure SQL Database 관리 ID 인증을 사용하여 BACPAC 파일 가져오기를 지원합니다. 이 옵션을 사용하면 자격 증명이 없는 가져오기 작업을 사용할 수 있으며 SQL 인증을 사용하지 않도록 설정하거나 Microsoft Entra 전용 인증을 적용하는 환경에 권장됩니다.
데이터베이스를 새 데이터베이스 또는 기존 빈 데이터베이스로 가져올 수 있습니다.
자세한 자습서는 가져오기 및 내보내기와 함께 관리 ID 사용(미리 보기)을 참조하세요.
관리 ID 인증을 사용하여 BACPAC 파일을 가져오려면 다음 구성이 필요합니다.
- Azure SQL Database의 논리 서버에 할당된사용자 할당 관리 ID입니다.
- 서버에는 관리 ID가 Microsoft Entra 관리자 구성됩니다.
- 관리 ID는 원본 Azure Storage 계정의 Storage Blob Data Reader 역할에 할당됩니다. 이 관리 ID는 서버에 할당된 ID 또는 다른 ID와 같을 수 있습니다.
- 논리 서버, 관리 ID 및 스토리지 계정은 동일한 Microsoft Entra 테넌트에 있습니다.
지원되지 않는 시나리오는 다음과 같습니다.
- 테넌트 간 가져오기 작업
- 데이터베이스 수준에서만 할당된 관리 ID입니다.
참고
관리 ID 인증을 사용한 가져오기는 현재 preview이며 Azure SQL Database만 사용할 수 있습니다.
SqlPackage 사용
SqlPackage 명령줄 유틸리티를 사용하여 SQL Server 데이터베이스를 가져오려면 임포트 매개 변수 및 속성 참조하세요. Windows, macOS 또는 Linux용 최신 SqlPackage 다운로드할 수 있습니다.
규모와 성능을 위해 Azure 포털을 사용하는 대신 대부분의 프로덕션 환경에서 SqlPackage를 사용하는 것이 좋습니다.
BACPAC 파일을 사용하여 마이그레이션하는 방법에 대한 SQL Server 고객 자문 팀 블로그는 BACPAC 파일을 사용하여 SQL Server에서 Azure SQL Database로 마이그레이션하기를 참조하세요.
DTU 기반 프로비저닝 모델은 각 계층에 대한 데이터베이스 최대 크기 값을 선택할 수 있도록 해줍니다. 데이터베이스를 가져올 때 지원되는 값 중 하나를 사용합니다.
다음 SqlPackage 명령은 로컬 스토리지의 AdventureWorks2008R2 데이터베이스를 mynewserver20170403 논리 SQL 서버로 가져옵니다.
myMigratedDatabase(이)라는 새 데이터베이스를 만들고, Premium 서비스 계층 및 P6 서비스 목표를 설정합니다. 이러한 값을 사용자 환경에 적절하게 변경합니다.
SqlPackage /a:import /tcs:"Data Source=<serverName>.database.windows.net;Initial Catalog=<migratedDatabase>;User Id=<userId>;Password=<password>" /sf:AdventureWorks2008R2.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6
중요
회사 방화벽 뒤에서 Azure SQL Database 연결하려면 방화벽에 포트 1433이 열려 있어야 합니다. SQL Managed Instance에 연결하려면 포인트-사이트 연결 또는 익스프레스 라우트 연결이 있어야 합니다.
사용자 이름 및 암호 대신 Microsoft Entra ID(formerly Azure Active Directory)를 사용할 수 있습니다. 현재 Import/Export 서비스는 MFA가 필요한 경우 Microsoft Entra ID 인증을 지원하지 않습니다. 사용자 이름 및 암호 매개 변수를 /ua:true 및 /tid:"yourdomain.onmicrosoft.com"으로 대체할 수 있습니다. 이 예제에서는 Microsoft Entra 인증과 함께 SqlPackage를 사용하여 데이터베이스를 가져오는 방법을 보여줍니다.
SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"
Visual Studio Code
Visual Studio Code MSSQL 확장은 Windows, macOS 및 Linux에 사용할 수 있는 무료 오픈 소스 확장입니다. 확장에는 내보내기 및 가져오기를 포함하여 SqlPackage 작업에 대한 데이터 계층 애플리케이션(미리 보기) 환경이 포함됩니다. 확장을 설치하고 사용하는 방법에 대한 자세한 내용은 Visual Studio Code 대한
PowerShell 사용
참고
Azure SQL Managed Instance 현재 Azure PowerShell 사용하여 BACPAC 파일에서 인스턴스 데이터베이스로 데이터베이스 마이그레이션을 지원하지 않습니다. SQL 관리형 인스턴스로 가져오려면 SQL Server Management Studio 또는 SQLPackage를 사용합니다.
참고
포털 또는 PowerShell을 통해 제출된 가져오기/내보내기 요청을 처리하는 컴퓨터는 DacFX(Data-Tier Application Framework)에서 생성된 임시 파일뿐만 아니라 BACPAC 파일을 저장해야 합니다. 필요한 디스크 공간은 동일한 크기의 DB 간에도 크게 다르며, 데이터베이스 크기의 최대 3배를 차지할 수 있습니다. 가져오기/내보내기 요청을 실행하는 머신에는 450GB의 로컬 디스크 공간만 있습니다. 따라서 일부 요청은 다음과 같은 오류 There is not enough space on the disk로 인해 실패할 수 있습니다. 이 경우 해결 방법은 충분한 로컬 디스크 공간이 있는 머신에서 SqlPackage를 실행하는 것입니다. 이 문제를 방지하려면 150GB보다 큰 데이터베이스를 가져오거나 내보낼 때 SqlPackage를 사용합니다.
중요
PowerShell Azure Resource Manager(AzureRM) 모듈은 2024년 2월 29일에 사용되지 않습니다. 향후 모든 개발에서는 Az.Sql 모듈을 사용해야 합니다. 사용자는 지속적인 지원 및 업데이트를 보장하기 위해 AzureRM에서 Az PowerShell 모듈로 마이그레이션하는 것이 좋습니다. AzureRM 모듈은 더 이상 유지 관리되거나 지원되지 않습니다. Az PowerShell 모듈 및 AzureRM 모듈의 명령에 대한 인수는 상당히 동일합니다. 호환성에 대한 자세한 내용은 새 Az PowerShell 모듈소개를 참조하세요.
New-AzSqlDatabaseImport cmdlet을 사용하여 Azure 가져오기 데이터베이스 요청을 제출합니다. 데이터베이스 크기에 따라 가져오기를 완료하는 데 다소 시간이 걸릴 수 있습니다. DTU 기반 프로비저닝 모델은 각 계층에 대한 데이터베이스 최대 크기 값을 선택할 수 있도록 해줍니다. 데이터베이스를 가져올 때 지원되는 값 중 하나를 사용합니다.
$importRequest = New-AzSqlDatabaseImport -ResourceGroupName "<resourceGroupName>" `
-ServerName "<serverName>" -DatabaseName "<databaseName>" `
-DatabaseMaxSizeBytes "<databaseSizeInBytes>" -StorageKeyType "StorageAccessKey" `
-StorageKey $(Get-AzStorageAccountKey `
-ResourceGroupName "<resourceGroupName>" -StorageAccountName "<storageAccountName>").Value[0] `
-StorageUri "https://myStorageAccount.blob.core.windows.net/importsample/sample.bacpac" `
-Edition "Premium" -ServiceObjectiveName "P6" `
-AdministratorLogin "<userId>" `
-AdministratorLoginPassword $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)
Get-AzSqlDatabaseImportExportStatus cmdlet을 사용하여 가져오기의 진행 상황을 확인할 수 있습니다. 요청 직후에 cmdlet을 실행하면 대개 Status: InProgress가 반환됩니다.
Status: Succeeded가 표시되면 가져오기가 완료된 것입니다.
$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
[Console]::Write("Importing")
while ($importStatus.Status -eq "InProgress") {
$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
[Console]::Write(".")
Start-Sleep -s 10
}
[Console]::WriteLine("")
$importStatus
가져오기 요청 취소
다음 예제와 같이 데이터베이스 작업 - 취소 API 또는 Stop-AzSqlDatabaseActivity PowerShell 명령을 사용합니다.
Stop-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -OperationId $Operation.OperationId
가져오기를 취소하는 데 필요한 권한
가져오기 작업을 취소하려면 다음 역할 중 하나가 있어야 합니다.
- SQL DB 기여자 역할
-
사용자 정의 Azure 역할 기반 액세스 제어 (RBAC) 역할
Microsoft.Sql/servers/databases/operations권한
새 데이터베이스 호환성 수준
가져온 데이터베이스의 호환성 수준은 원본 데이터베이스의 호환성 수준에 기반합니다.
데이터베이스를 가져온 후에는 데이터베이스를 현재 호환성 수준 또는 더 높은 수준에서 작동하도록 선택할 수 있습니다. 특정 호환성 수준에서 데이터베이스를 운영하기 위한 의미 및 옵션에 대한 자세한 내용은 ALTER DATABASE 호환성 수준을 참조하세요. 호환성 수준과 관련된 다른 데이터베이스 수준 설정에 대한 자세한 내용은 ALTER DATABASE SCOPED CONFIGURATION을 참조하세요.
제한 사항
- 탄력적 풀의 데이터베이스로 가져오기는 Azure 포털, Azure PowerShell 또는 Azure CLI 통해 지원되지 않습니다. 대신 탄력적 풀에서 데이터베이스를 만든 다음 SQLPackage 가져오기사용하거나 모든 메서드를 사용하여 데이터를 단일 데이터베이스로 가져온 다음 데이터베이스를 탄력적 풀로 이동합니다.
- Azure 서비스에 대한 액세스 허용이 OFF로 설정된 경우 내보내기 가져오기 서비스가 작동하지 않습니다. 그러나 Azure VM에서 SqlPackage를 수동으로 실행하거나 DacFx API를 사용하여 코드에서 직접 내보내기를 수행하여 문제를 해결할 수 있습니다.
- 가져오기는 새 데이터베이스를 만드는 동안 백업 스토리지 중복을 지정하는 것을 지원하지 않으며 기본 지역 중복 백업 스토리지 중복성을 사용하여 만듭니다. 해결하려면 먼저 Azure 포털 또는 PowerShell을 사용하여 원하는 백업 스토리지 중복성이 있는 빈 데이터베이스를 만든 다음 BACPAC를 이 빈 데이터베이스로 가져옵니다.
- 방화벽 뒤의 스토리지는 현재 지원되지 않습니다.
- 가져오기 프로세스 중에는 이름이 같은 데이터베이스를 만들지 마세요. 가져오기 프로세스는 지정된 이름의 새 데이터베이스를 만듭니다.
- 현재 Import/Export 서비스는 MFA가 필요한 경우 Microsoft Entra ID 인증을 지원하지 않습니다.
- Import\Export 서비스는 SQL 인증 및 Microsoft Entra ID만 지원합니다. Import\Export는 Microsoft ID 애플리케이션 등록과 호환되지 않습니다.
추가 도구
이러한 마법사를 사용할 수도 있습니다.
관련 콘텐츠
- 빠른 시작: SSMS를 사용하여 Azure SQL Database 또는 Azure SQL Managed Instance에 연결하고 쿼리하기
- BACPAC 파일을 사용하여 SQL Server에서 Azure SQL Database로 마이그레이션하기
SQL Server 데이터베이스를 Azure SQL Database - Azure Storage 보안 가이드