Azure SQL Database를 BACPAC 파일로 내보내기

다른 플랫폼에 보관하거나 이동하기 위해 데이터베이스를 내보내야 할 경우 데이터베이스 스키마 및 데이터를 BACPAC 파일로 내보낼 수 있습니다. BACPAC 파일은 메타데이터 및 SQL Server 데이터베이스의 데이터를 포함하는 BACPAC의 확장명을 가진 ZIP 파일입니다. BACPAC 파일은 Azure Blob Storage 또는 온-프레미스 저장소의 로컬 저장소에 저장할 수 있으며 나중에 Azure SQL Database 또는 SQL Server 온-프레미스 설치로 다시 가져올 수 있습니다.

중요

Azure SQL Database 자동화된 내보내기는 2017년 3월 1일에 사용이 중지되었습니다. 장기 백업 보존 또는 Azure Automation을 사용하여 선택한 일정에 따라 PowerShell을 사용해 주기적으로 SQL Database를 보관할 수 있습니다. 샘플의 경우 GitHub에서 샘플 PowerShell 스크립트를 다운로드합니다.

Azure SQL Database를 내보낼 경우 고려 사항

  • 내보내기 작업에서 트랜잭션이 일치하도록 내보내기 중에나 Azure SQL Database의 트랜잭션 일치 복사본에서 내보내는 중에는 쓰기 활동이 발생하지 않도록 해야 합니다.
  • Blob Storage로 내보내는 경우 BACPAC 파일의 최대 크기는 200GB입니다. 더 큰 BACPAC 파일을 보관하려면 로컬 저장소로 내보냅니다.
  • 이 문서에서 설명하는 방법을 사용하여 Azure Premium Storage에서 BACPAC 파일을 내보낼 수는 없습니다.
  • Azure SQL Database에서 내보내기 작업이 20시간을 초과하면 취소될 수 있습니다. 내보내는 중에 성능을 향상시키기 위해 다음을 수행할 수 있습니다.
    • 서비스 수준을 일시적으로 높이기
    • 내보내기 중에 모든 읽기 및 쓰기 작업 중단
    • 모든 대형 테이블에 null이 아닌 값의 클러스터형 인덱스 를 사용합니다. 클러스터형 인덱스가 없는 경우 6~12시간 이상 소요되면 내보내기에 실패할 수 있습니다. 전체 테이블 내보내기를 시도하려면 내보내기 서비스에서 테이블 스캔을 완료해야 하기 때문입니다. 테이블이 내보내기에 최적화되었는지 확인하는 좋은 방법은 DBCC SHOW_STATISTICS를 실행하고 RANGE_HI_KEY가 null이 아닌지와 해당 값이 잘 배포되어 있는지 검토하는 것입니다. 자세한 내용은 DBCC SHOW_STATISTICS를 참조하세요.

참고

BACPAC는 백업에 사용되는 목적이 아니며 작업을 복원합니다. Azure SQL Database에서는 모든 사용자 데이터베이스의 백업이 자동으로 생성됩니다. 자세한 내용은 비즈니스 연속성 개요SQL Database 백업을 참조하세요.

Azure Portal을 사용하여 BACPAC 파일로 내보내기

Azure Portal을 사용하여 데이터베이스를 내보내려면 데이터베이스에 대한 페이지를 열고 도구 모음에서 내보내기를 클릭합니다. BACPAC 파일 이름을 지정하고, 내보내기에 필요한 Azure Storage 계정 및 컨테이너를 제공하고, 원본 데이터베이스에 연결할 자격 증명을 제공합니다.

데이터베이스 내보내기

내보내기 작업의 진행률을 모니터링하려면 내보낼 데이터베이스가 포함된 논리 서버에 대한 페이지를 엽니다. 아래로 작업이 나올 때까지 스크롤한 다음 가져오기/내보내기 기록을 클릭합니다.

내보내기 기록 내보내기 기록 상태

SQLPackage 유틸리티를 사용하여 BACPAC 파일로 내보내기

SqlPackage 명령줄 유틸리티를 사용하여 SQL Database를 내보내려면 매개 변수 및 속성 내보내기를 참조하세요. SQLPackage 유틸리티는 최신 버전의 SQL Server Management StudioVisual Studio용 SQL Server Data Tools가 함께 제공되며, Microsoft 다운로드 센터에서 직접 최신 버전의 SqlPackage를 다운로드할 수 있습니다.

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

이 예제는 Active Directory 유니버설 인증으로 SqlPackage.exe를 사용하여 데이터베이스를 내보내는 방법을 보여줍니다.

SqlPackage.exe /a:Export /tf:testExport.bacpac /scs:"Data Source=apptestserver.database.windows.net;Initial Catalog=MyDB;" /ua:True /tid:"apptest.onmicrosoft.com"

SSMS(SQL Server Management Studio)를 사용하여 BACPAC 파일로 내보내기

또한 최신 버전의 SQL Server Management Studio에서는 Azure SQL Database를 BACPAC 파일로 내보내기 위한 마법사도 제공합니다. 데이터 계층 응용 프로그램 내보내기를 참조하세요.

PowerShell을 사용하여 BACPAC 파일로 내보내기

New-AzureRmSqlDatabaseExport cmdlet을 사용하여 Azure SQL Database 서비스에 데이터베이스 내보내기 요청을 제출합니다. 데이터베이스 크기에 따라 내보내기 작업을 완료하는 데 다소 시간이 걸릴 수 있습니다.

$exportRequest = New-AzureRmSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName `
  -DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri `
  -AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password

내보내기 요청의 상태를 확인하려면 Get AzureRmSqlDatabaseImportExportStatus cmdlet을 사용합니다. 이 요청 직후에 이 명령을 실행하면 Status: InProgress가 반환됩니다. Status : Succeeded가 표시되면 내보내기가 완료된 것입니다.

$exportStatus = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
[Console]::Write("Exporting")
while ($exportStatus.Status -eq "InProgress")
{
    $exportStatus = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
    [Console]::Write(".")
    Start-Sleep -s 10
}
[Console]::WriteLine("")
$exportStatus

다음 단계