다음을 통해 공유


빠른 시작: Azure SQL Database 또는 Azure SQL Managed Instance 데이터베이스로 bacpac 파일을 가져옵니다.

적용 대상: Azure SQL Database Azure SQL Managed Instance

.bacpac 파일을 사용하여 Azure SQL Database 또는 SQL Managed Instance의 SQL Server 데이터베이스를 가져올 수 있습니다. Azure Blob Storage(표준 스토리지만 해당)에 저장된 bacpac 파일 또는 온-프레미스 위치의 로컬 스토리지에서 데이터를 가져올 수 있습니다. 더 빠른 리소스를 더 많이 제공하여 가져오기 속도를 높이려면 가져오기 프로세스 중에 데이터베이스를 더 높은 서비스 계층 및 컴퓨팅 크기로 확장합니다. 그런 다음, 가져오기가 성공하면 크기를 축소할 수 있습니다.

참고 항목

Private Link를 사용하여 가져오기 및 내보내기는 미리 보기로 제공됩니다.

Azure Portal 사용

이 비디오 또는 이 문서를 통해 Azure Portal에서 bacpac 파일을 가져오는 방법을 확인해 보세요.

Azure Portal오로지 Azure SQL Database의 단일 데이터베이스 만들기 및 Azure Blob Storage에 저장된 bacpac 파일을 통한 만들기 기능 지원합니다.

Warning

SqlPackage에서 생성된 4GB 이상의 bacpac 파일을 Azure Portal 또는 Azure PowerShell에서 가져올 경우, File contains corrupted data. 오류 메시지가 뜰 수 있으며 작업에 실패할 수 있습니다. 이 문제는 SqlPackage 명령줄 유틸리티를 사용하여 bacpac 파일을 가져오면 해결할 수 있습니다. 자세한 내용은 SqlPackage문제 로그를 참조하세요.

bacpac 파일을 사용하여 Azure SQL Managed Instance로 데이터베이스를 마이그레이션하려면 SQL Server Management Studio 또는 SQLPackage를 사용하세요. 현재는 Azure Portal 또는 Azure PowerShell 사용이 지원되지 않습니다.

참고 항목

Azure Portal 또는 PowerShell을 통해 제출된 가져오기/내보내기 요청을 처리하는 머신은 bacpac 파일뿐만 아니라 DacFX(데이터 계층 애플리케이션 프레임워크)에서 생성한 임시 파일도 저장해야 합니다. 필요한 디스크 공간은 동일한 크기의 데이터베이스 간에도 크게 다르며, 데이터베이스 크기의 최대 3배까지 디스크 공간이 필요할 수 있습니다. 가져오기/내보내기 요청을 실행하는 머신에는 450GB의 로컬 디스크 공간만 있습니다. 따라서 일부 요청은 There is not enough space on the disk 오류로 실패할 수 있습니다. 이 경우 해결 방법은 충분한 로컬 디스크 공간이 있는 머신에서 SqlPackage를 실행하는 것입니다. 이 문제를 방지하려면 SqlPackage를 사용하여 150GB보다 큰 데이터베이스를 가져오거나 내보내는 것이 좋습니다.

  1. Azure 포털을 사용하여 bacpac 파일에서 새 단일 데이터베이스로 가져오려면 적절한 서버 페이지를 연 다음, 툴바에서 데이터베이스 가져오기를 선택합니다.

    데이터베이스 가져오기가 선택된 Azure Portal 논리 서버 개요 페이지의 스크린샷

  2. 백업 선택을 선택합니다. 데이터베이스를 호스트하는 스토리지 계정을 선택한 다음, 가져올 bacpac 파일을 선택합니다.

  3. 새 데이터베이스의 크기(일반적으로 원본과 동일)를 지정하고 대상 SQL Server 자격 증명을 제공합니다. 새 Azure SQL Database 데이터베이스에 가능한 값 목록은 데이터베이스 만들기를 참조하세요.

    Azure Portal 데이터베이스 가져오기 페이지의 스크린샷

  4. 확인을 선택합니다.

  5. 가져오기 진행률을 모니터링하려면 데이터베이스의 서버 페이지를 열고, 설정 아래에서 가져오기/내보내기 기록을 선택합니다. 성공하면 가져오기가 완료됨 상태가 됩니다.

    데이터베이스 가져오기 상태를 보여 주는 Azure Portal 서버 개요 페이지의 스크린샷

  6. 데이터베이스가 서버에서 라이브 상태인지 확인하려면 SQL 데이터베이스를 선택하고 새 데이터베이스가 온라인 상태인지 확인합니다.

SqlPackage 사용

SqlPackage 명령줄 유틸리티를 사용하여 SQL Server 데이터베이스를 가져오려면 매개 변수 및 속성 가져오기를 참조하세요. Windows, macOS 또는 Linux용 최신 SqlPackage를 다운로드할 수 있습니다.

규모 및 성능과 관련하여 대부분의 프로덕션 환경에서는 Azure Portal보다 SqlPackage를 사용하는 것이 좋습니다. BACPAC 파일을 사용한 마이그레이션에 대한 SQL Server 고객 자문 팀 블로그는 BACPAC 파일을 사용하여 SQL Server에서 Azure SQL Database로 마이그레이션하기를 참조하세요.

DTU 기반 프로비저닝 모델은 각 계층에 대한 데이터베이스 최대 크기 값을 선택할 수 있도록 해줍니다. 데이터베이스를 가져올 때 지원되는 값 중 하나를 사용합니다.

다음 SqlPackage 명령은 로컬 스토리지의 AdventureWorks2008R2 데이터베이스를 mynewserver20170403 논리 SQL 서버로 가져옵니다. 프리미엄 서비스 계층 및 P6 서비스 개체를 가진 myMigratedDatabase(이)라는 새 데이터베이스를 만듭니다. 이러한 값을 사용자 환경에 적절하게 변경합니다.

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에 연결하려면 지점 및 사이트 간 연결 또는 Express 경로 연결이 필요합니다.

사용자 이름 및 암호 대신 Microsoft Entra ID(이전의 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"

Azure Data Studio

Azure Data Studio는 무료 오픈 소스 도구이며 Windows, macOS 및 Linux에서 사용할 수 있습니다. “SQL Server dacpac” 확장은 내보내기 및 가져오기를 포함한 SqlPackage 작업에 대한 마법사 인터페이스를 제공합니다. 확장 설치 및 사용에 대한 자세한 내용은 SQL Server dacpac 확장 설명서를 참조하세요.

PowerShell 사용

참고 항목

Azure SQL Managed Instance는 현재 Azure PowerShell을 사용하여 bacpac 파일에서 인스턴스 데이터베이스로 데이터베이스를 마이그레이션하는 기능을 지원하지 않습니다. SQL Managed Instance로 가져오려면 SQL Server Management Studio 또는 SQLPackage를 사용합니다.

참고

포털 또는 PowerShell을 통해 제출된 가져오기/내보내기 요청을 처리하는 머신은 bacpac 파일뿐만 아니라 DacFX(데이터 계층 애플리케이션 프레임워크)에서 생성한 임시 파일도 저장해야 합니다. 필요한 디스크 공간은 동일한 크기의 DB 간에도 크게 다르며, 데이터베이스 크기의 최대 3배를 차지할 수 있습니다. 가져오기/내보내기 요청을 실행하는 머신에는 450GB의 로컬 디스크 공간만 있습니다. 따라서 일부 요청은 "디스크 공간이 부족합니다." 오류와 함께 실패할 수 있습니다. 이 경우 해결 방법은 충분한 로컬 디스크 공간이 있는 머신에서 SqlPackage를 실행하는 것입니다. 이 문제를 방지하려면 150GB보다 큰 데이터베이스를 가져오거나 내보낼 때 SqlPackage를 사용합니다.

중요

PowerShell Azure RM(Resource Manager) 모듈은 여전히 지원되지만 향후 모든 개발은 Az.Sql 모듈을 위한 것입니다. AzureRM 모듈은 적어도 2020년 12월까지 버그 수정을 계속 수신할 예정입니다. Az 모듈 및 AzureRm 모듈의 명령에 대한 인수는 실질적으로 동일합니다. 호환성에 대한 자세한 내용은 새로운 Azure PowerShell Az 모듈 소개를 참조하세요.

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

다른 스크립트 예제는 BACPAC 파일에서 데이터베이스 가져오기를 참조하세요.

가져오기 요청 취소

다음 예제와 같이 데이터베이스 작업 - 취소 API 또는 Stop-AzSqlDatabaseActivity PowerShell 명령을 사용합니다.

Stop-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -OperationId $Operation.OperationId

가져오기를 취소하는 데 필요한 권한

가져오기 작업을 취소하려면 다음 역할 중 하나가 있어야 합니다.

새 데이터베이스 호환성 수준

  • 가져온 데이터베이스의 호환성 수준은 원본 데이터베이스의 호환성 수준에 기반합니다.
  • 데이터베이스를 가져온 후에는 데이터베이스를 현재 호환성 수준 또는 더 높은 수준에서 작동하도록 선택할 수 있습니다. 특정 호환성 수준에서 데이터베이스를 운영하기 위한 옵션 및 그 영향에 대한 자세한 내용은 ALTER DATABASE 호환성 수준을 참조하세요. 또한 호환성 수준과 관련된 기타 데이터베이스 수준 설정에 대한 자세한 내용은 ALTER DATABASE SCOPED CONFIGURATION을 참조하세요.

제한 사항

  • 탄력적 풀의 데이터베이스로 가져오기는 지원되지 않습니다. 단일 데이터베이스로 데이터를 가져온 다음, 해당 데이터베이스를 탄력적 풀로 이동할 수 있습니다.
  • Azure 서비스에 대한 액세스 허용이 끄기로 설정되어 있으면 가져오기/내보내기 서비스가 작동하지 않습니다. 하지만 Azure VM에서 수동으로 SqlPackage를 실행하거나 DacFx API를 사용하여 코드로 직접 내보내기를 수행하여 문제를 해결할 수도 있습니다.
  • 가져오기는 새 데이터베이스를 만드는 동안 백업 스토리지 중복도를 지정하는 것을 지원하지 않으며 기본 지역 중복 백업 스토리지 중복도를 사용하여 새 데이터베이스를 만듭니다. 이 문제를 해결하려면 먼저 Azure Portal 또는 PowerShell을 사용하여 원하는 백업 스토리지 중복도로 빈 데이터베이스를 만든 다음, 이 빈 데이터베이스에 bacpac을 가져옵니다.
  • 방화벽 뒤의 스토리지는 현재 지원되지 않습니다.
  • 가져오기 프로세스 중에는 이름이 같은 데이터베이스를 만들지 마세요. 가져오기 프로세스는 지정된 이름의 새 데이터베이스를 만듭니다.
  • 현재 Import/Export 서비스는 MFA가 필요한 경우 Microsoft Entra ID 인증을 지원하지 않습니다.
  • Import\Export 서비스는 SQL 인증 및 Microsoft Entra ID만 지원합니다. Import\Export는 Microsoft ID 애플리케이션 등록과 호환되지 않습니다.

추가 도구

다음 마법사를 사용할 수도 있습니다.