다음을 통해 공유


Azure SQL Database의 데이터베이스에 대한 트랜잭션 일치 복사본 복사

적용 대상: Azure SQL Database

Azure SQL Database는 동일한 서버 또는 다른 서버에서 기존 데이터베이스의 복사본을 만들기 위한 여러 가지 방법을 제공합니다. Azure Portal, PowerShell, Azure CLI 또는 Transact-SQL을 사용하여 데이터베이스를 복사할 수 있습니다.

참고 항목

Microsoft Entra ID는 이전의 Azure AD(Azure Active Directory)입니다.

개요

데이터베이스 복사본은 복사 요청이 시작된 시점의 소스 데이터베이스에 대한 트랜잭션 일관성 있는 스냅샷입니다. 복사본에 대해 동일한 서버 또는 다른 서버를 선택할 수 있습니다. 또한 원본 데이터베이스의 백업 중복 및 컴퓨팅 크기를 유지하거나 동일한 서비스 계층 내에서 다른 백업 스토리지 중복 및/또는 컴퓨팅 크기를 사용하도록 선택할 수 있습니다. 표준 서비스 계층의 데이터베이스를 표준 또는 범용 계층으로, 프리미엄 서비스 계층의 데이터베이스를 프리미엄 또는 중요 비즈니스 계층으로 복사할 수도 있습니다.

복사가 완료되면 새 데이터베이스는 원본 데이터베이스에 대한 완전 기능적이고 독립적인 데이터베이스입니다. 복사된 데이터베이스의 로그인, 사용자 및 사용 권한은 원본 데이터베이스와 독립적으로 관리됩니다. 이 복사본은 지역에서 복제 기술을 사용하여 만들어집니다. 복제본 시드가 완료되면 지역에서 복제 링크가 자동으로 종료됩니다. 지역에서 복제 사용에 대한 모든 요구 사항은 데이터베이스 복사 작업에 적용됩니다. 자세한 내용은 활성 지역 복제 개요를 참조하세요.

참고 항목

Azure Portal, PowerShell 및 Azure CLI는 다른 구독에 대한 데이터베이스 복사를 지원하지 않습니다.

하이퍼스케일 데이터베이스에 대한 데이터베이스 복사본

하이퍼스케일 서비스 계층의 데이터베이스의 경우, 대상 데이터베이스는 사본이 빠른 사본인지 아니면 데이터 크기 사본인지 결정합니다:

  • 빠른 복사: 복사가 원본과 동일한 지역에서 수행되면 Blob의 스냅샷에서 복사본이 만들어집니다. 이 복사본은 데이터베이스 크기에 관계없이 빠른 작업입니다.

  • Size-of-data 복사: 대상 데이터베이스가 원본과 다른 지역에 있거나 대상의 데이터베이스 백업 스토리지 중복성(로컬, 영역, 지역)이 원본 데이터베이스와 다른 경우 복사 작업은 size-of-data 작업이 됩니다. 페이지 서버 Blob이 병렬로 복사되기 때문에 복사 시간은 크기에 직접 비례하지 않습니다.

데이터베이스 복사본에서 로그인

데이터베이스를 동일한 서버에 복사할 때 두 데이터베이스에서 동일한 로그인을 사용할 수 있습니다. 데이터베이스를 복사하는 데 사용하는 보안 주체는 새 데이터베이스의 데이터베이스 소유자가 됩니다.

다른 서버에 데이터베이스를 복사하는 경우 대상 서버에서 복사 작업을 시작한 보안 주체가 새 데이터베이스의 소유자가 됩니다.

대상 서버에 관계없이 모든 데이터베이스 사용자, 권한 및 SID(보안 식별자)가 데이터베이스 사본에 복사됩니다. 데이터 액세스에 대해 포함된 데이터베이스 사용자를 사용하면 복사된 데이터베이스에 동일한 사용자 자격 증명이 있으므로 복사를 완료한 후 동일한 자격 증명을 사용하여 해당 데이터베이스에 즉시 액세스할 수 있습니다.

데이터 액세스에 서버 수준 로그인을 사용하고 데이터베이스를 다른 서버에 복사하는 경우 로그인 기반 액세스가 작동하지 않을 수 있습니다. 이는 로그인이 대상 서버에 없거나 암호 및 SID(보안 식별자)가 다르기 때문에 발생할 수 있습니다. 다른 서버로 데이터베이스를 복사할 때 로그인을 관리하는 방법에 대한 자세한 내용은 재해 복구 후에 Azure SQL Database 보안을 관리하는 방법을 참조하세요. 다른 서버에 대한 복사 작업이 성공하고 다른 사용자를 다시 매핑하기 전에는 데이터베이스 소유자나 서버 관리자와 연결된 로그인만 복사된 데이터베이스에 로그인할 수 있습니다. 복사 작업이 완료된 후 로그인을 확인하고 데이터 액세스를 설정하려면 로그인 확인을 참조하세요.

Azure Portal을 사용하여 복사

Azure Portal을 사용하여 데이터베이스를 복사하려면 데이터베이스에 대한 페이지를 연 다음, 복사를 선택하여 SQL Database 만들기 - 데이터베이스 복사 페이지를 엽니다. 데이터베이스를 복사할 대상 서버의 값을 입력합니다.

데이터베이스 개요 페이지에서 강조 표시된 데이터베이스 복사 옵션을 보여 주는 Azure Portal 스크린샷

데이터베이스 복사

PowerShell, Azure CLI 및 T-SQL(Transact-SQL)을 사용하여 데이터베이스를 복사할 수 있습니다.

PowerShell의 경우 AzSqlDatabaseCopy cmdlet을 사용합니다.

중요

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

New-AzSqlDatabaseCopy -ResourceGroupName "<resourceGroup>" -ServerName $sourceserver -DatabaseName "<databaseName>" `
    -CopyResourceGroupName "myResourceGroup" -CopyServerName $targetserver -CopyDatabaseName "CopyOfMySampleDatabase"

데이터베이스 복사는 비동기 작업이지만 요청이 수락된 직후에 대상 데이터베이스가 생성됩니다. 진행 중인 동안 복사 작업을 취소해야 하는 경우 Remove-AzSqlDatabase cmdlet을 사용하여 대상 데이터베이스를 삭제합니다.

전체 샘플 PowerShell 스크립트는 새 서버에 데이터베이스 복사를 참조하세요.

복사 작업 진행 상황 모니터링

sys.databases, sys.dm_database_copiessys.dm_operation_status 뷰를 쿼리하여 복사 프로세스를 모니터링합니다. 복사가 진행되는 동안 새 데이터베이스에 대해 sys.databases 뷰의 state_desc 열이 COPYING(으)로 설정됩니다.

  • 복사에 실패할 경우 새 데이터베이스에 대해 sys.databases 뷰의 state_desc 열이 SUSPECT(으)로 설정됩니다. 새 데이터베이스에서 DROP 문을 실행하고 나중에 다시 시도합니다.
  • 복사에 성공할 경우 새 데이터베이스에 대해 sys.databases 뷰의 state_desc 열이 ONLINE(으)로 설정됩니다. 복사가 완료되었으며 새 데이터베이스가 원본 데이터베이스와는 독립적으로 변경 가능한 일반 데이터베이스가 됩니다.

참고 항목

진행 중인 복사를 취소하려면 새 데이터베이스에서 DROP DATABASE 문을 실행합니다.

Important

원본보다 훨씬 더 작은 서비스 목표를 가진 복사본을 만들어야 하는 경우, 대상 데이터베이스에 시드 프로세스를 완료하는 데 필요한 리소스가 부족하여 복사 작업이 실패할 수 있습니다. 이 시나리오에서는 지역 복원 요청을 사용하여 다른 서버 및/또는 다른 지역에 복사본을 만듭니다. 자세한 내용은 데이터베이스 백업을 사용하여 Azure SQL Database 복구하기를 참조하세요.

사용 권한

데이터베이스 복사본을 만들려면 다음 역할을 부여받아야 합니다.

  • 구독 소유자 또는
  • SQL Server 기여자 역할 또는
  • 다음 권한이 있는 사용자 지정 역할:
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write and
  • 대상 서버에 대한 다음 권한이 있는 사용자 지정 역할:
    • Microsoft.Sql/servers/read
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write

데이터베이스 복사를 취소하려면 다음 역할을 부여받아야 합니다.

  • 구독 소유자 또는
  • SQL Server 기여자 역할 또는
  • 대상 데이터베이스에 대한 다음 권한이 있는 사용자 지정 역할:
    • Microsoft.Sql/servers/databases/delete

Azure Portal을 사용하여 데이터베이스 복사를 관리하려면 다음 사용 권한도 필요합니다.

  • Microsoft.Resources/subscriptions/resources/read
  • Microsoft.Resources/deployments/read
  • Microsoft.Resources/deployments/write
  • Microsoft.Resources/deployments/operationstatuses/read

포털에서 리소스 그룹의 배포 아래에 있는 작업, SQL 작업을 비롯한 여러 리소스 공급자의 작업을 확인하려면 다음과 같은 추가 권한이 필요합니다.

  • Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read
  • Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read

로그인 확인

대상 서버에서 새 데이터베이스가 온라인 상태가 되면 ALTER USER 문을 사용하여 새 데이터베이스의 사용자를 대상 서버의 로그인과 다시 매핑합니다. 분리된 사용자를 확인하려면 분리된 사용자 문제 해결을 참조하세요. 재해 복구 후에 Azure SQL Database 보안을 관리하는 방법도 참조하세요.

새 데이터베이스의 모든 사용자가 원본 데이터베이스에서 가졌던 사용 권한을 그대로 유지합니다. 데이터베이스 복사를 실행한 사용자가 새 데이터베이스의 소유자가 됩니다. 복사 성공 후 다른 사용자를 다시 매핑하기 전에는 데이터베이스 소유자만 새 데이터베이스에 로그인할 수 있습니다.

다른 서버로 데이터베이스를 복사할 때 사용자 및 로그인을 관리하는 방법에 대한 자세한 내용은 재해 복구 후에 Azure SQL Database 보안을 관리하는 방법을 참조하세요.

데이터베이스 복사 오류

Azure SQL Database에서 데이터베이스를 복사하는 동안 다음 오류가 발생할 수 있습니다. 자세한 내용은 Azure SQL Database 복사를 참조하세요.

오류 코드 심각도 설명
40635 16 IP 주소가 '%.*ls'인 클라이언트를 일시적으로 사용할 수 없습니다.
40637 16 데이터베이스 복사본 만들기를 현재 사용할 수 없습니다.
40561 16 데이터베이스를 복사하지 못했습니다. 원본 또는 대상 데이터베이스가 존재하지 않습니다.
40562 16 데이터베이스를 복사하지 못했습니다. 원본 데이터베이스가 삭제되었습니다.
40563 16 데이터베이스를 복사하지 못했습니다. 대상 데이터베이스가 삭제되었습니다.
40564 16 내부 오류로 인해 데이터베이스를 복사하지 못했습니다. 대상 데이터베이스를 삭제하고 다시 시도하십시오.
40565 16 데이터베이스를 복사하지 못했습니다. 동일한 소스에서 1개의 동시 데이터베이스 복사본이 허용됩니다. 대상 데이터베이스를 삭제하고 나중에 다시 시도하십시오.
40566 16 내부 오류로 인해 데이터베이스를 복사하지 못했습니다. 대상 데이터베이스를 삭제하고 다시 시도하십시오.
40567 16 내부 오류로 인해 데이터베이스를 복사하지 못했습니다. 대상 데이터베이스를 삭제하고 다시 시도하십시오.
40568 16 데이터베이스를 복사하지 못했습니다. 원본 데이터베이스를 사용할 수 없습니다. 대상 데이터베이스를 삭제하고 다시 시도하십시오.
40569 16 데이터베이스를 복사하지 못했습니다. 대상 데이터베이스를 사용할 수 없습니다. 대상 데이터베이스를 삭제하고 다시 시도하십시오.
40570 16 내부 오류로 인해 데이터베이스를 복사하지 못했습니다. 대상 데이터베이스를 삭제하고 나중에 다시 시도하십시오.
40571 16 내부 오류로 인해 데이터베이스를 복사하지 못했습니다. 대상 데이터베이스를 삭제하고 나중에 다시 시도하십시오.