영업: 1-800-867-1380

방법: 데이터베이스 복사(Azure SQL 데이터베이스) 사용

업데이트 날짜: 2014년 7월

이 항목에서는 데이터베이스 복사(DB 복사) 기능을 사용하여 Microsoft Azure SQL 데이터베이스의 복사본을 만드는 방법을 설명합니다. 복사 작업의 결과로 만들어진 새 데이터베이스는 완전하게 작동하며 원본 데이터베이스의 독립적인 복사본입니다. 복사 작업에서는 원본 데이터베이스의 서비스 계층 및 성능 수준이 유지됩니다. 대상 서버에 사용 가능한 할당량이 있는지 확인해야 합니다. 그렇지 않으면 작업이 실패합니다. 데이터베이스 복사에 사용 가능한 모든 방법 및 시나리오는 Azure SQL 데이터베이스에서 데이터베이스 복사를 참조하세요.

항목 내용

다음 표에는 데이터베이스 복사본을 만드는 데 사용할 수 있는 방법이 나와 있습니다.

 

복사 방법 프리미엄 Standard 기본 Business Web 서버 간/지역 간

Azure 관리 포털

같은 서버에만 복사할 수 있습니다.

Important중요
자세한 내용은 아래의 제한 섹션을 참조하세요.

Transact-SQL

(AS COPY OF 절을 포함하는 CREATE DATABASE 문)

서버 간 복사가 지원되지만 두 서버가 같은 지역에 있어야 합니다.

REST API

서버 간 및 지역 간 복사를 지원합니다. Premium 데이터베이스의 경우에는 지역 간 복제 관계를 설정할 수 있습니다. 이를 통해 여러 지역의 서버에서 데이터베이스 복사본을 유지할 수 있습니다. 자세한 내용은 Available Methods to Copy a Database를 참조하세요.

PowerShell

서버 간 및 지역 간 복사를 지원합니다. Premium 데이터베이스의 경우에는 지역 간 복제 관계를 설정할 수 있습니다. 이를 통해 여러 지역의 서버에서 데이터베이스 복사본을 유지할 수 있습니다. 자세한 내용은 Available Methods to Copy a Database를 참조하세요.

  • Azure SQL 데이터베이스 영역은 여러 개의 물리적 클러스터로 구성될 수 있습니다. 현재 PowerShell cmdlet 또는 REST API를 사용한 서로 다른 두 클러스터 간의 데이터베이스 복사만 가능합니다. 또한 Transact-SQL을 사용한 서로 다른 두 구독 간의 데이터베이스 복사만 가능합니다. 용량 관리의 일부로 Azure SQL 데이터베이스에서는 주기적으로 사용자의 서버를 다른 클러스터로 이전할 수 있습니다. 그러나 동일한 구독에 속한 서버는 동일한 클러스터 내에서 함께 유지됩니다.

    데이터베이스 복사가 가능한지 확인하려면 원본 서버와 대상 서버 모두에서 ping 명령(ping <server>)을 사용하여 해당 IP 주소를 확인합니다. IP 주소가 동일하면 데이터베이스를 복사할 수 있습니다. 자세한 내용은 Ping 명령 사용을 참조하세요.

  • Transact-SQL, PowerShell 또는 REST API를 사용하여 데이터베이스를 복사할 수 있습니다. 그러나 Transact-SQL을 사용할 경우 동일한 클러스터 내의 서로 다른 서버 간 복사로만 제한됩니다. PowerShell 및 REST API는 서로 다른 물리적 클러스터 내의 서로 다른 서버에 대한 복사를 지원합니다.

데이터베이스 복사 작업은 복사 프로세스와 관련된 Azure SQL 데이터베이스 서버의 성능에 영향을 주므로 복사 프로세스를 완료하려면 시간이 더 필요할 수 있습니다. 데이터베이스 복사에 실패할 경우 원본 데이터베이스의 사용량이 적을 때 복사 프로세스를 다시 시작합니다. 복사 프로세스가 완료될 때까지 원본 데이터베이스에서 다른 작업을 일시 중지해야 할 수도 있습니다.

Transact-SQL을 사용하여 데이터베이스를 복사하려면 로그인에 다음과 같은 사용 권한이 필요합니다.

  • 두 서버: 로그인이 두 Azure SQL 데이터베이스 서버에서 동일한 로그인 이름과 암호를 가지고 있어야 합니다.

  • 대상 서버: 로그인이 서버 수준 dbmanager 역할을 구성원이어야 합니다. 참고: Azure SQL 데이터베이스 서버의 서버 수준 보안 주체는 dbmanager 역할의 구성원이 아니지만 자동으로 동일한 사용 권한을 갖습니다. Azure SQL 데이터베이스에서 로그인을 관리하는 방법에 대한 자세한 내용은 Azure SQL 데이터베이스에서 데이터베이스 및 로그인 관리를 참조하세요.

  • 원본 서버: 로그인이 원본 데이터베이스의 DBO여야 합니다. 원본 데이터베이스를 만든 로그인인 DBO 또는 서버 수준 보안 주체만이 데이터베이스를 다른 데이터베이스로 복사할 수 있습니다.

이러한 사용 권한 요구 사항이 충족되는 경우 로그인은 새 데이터베이스에 대해 Azure SQL 데이터베이스 ALTER DATABASEDROP DATABASE 문을 실행할 수 있습니다. PowerShell 또는 REST API를 사용하여 데이터베이스를 복사할 경우 사용 권한에서는 인증서 기반 인증을 사용합니다.

note참고
Azure SQL 데이터베이스에서는 ALTER AUTHORIZATION ON DATABASE 문을 사용하여 데이터베이스 소유자를 변경할 수 없습니다. Azure SQL 데이터베이스의 데이터베이스에서 추가 사용자를 만들어 db_owner 데이터베이스 수준 역할에 추가할 수 있습니다. 처음에 데이터베이스를 만든 로그인이 아닌 다른 로그인에 이러한 추가 사용자를 연결할 수 있습니다. 그러나 이러한 추가 사용자는 데이터베이스 복사를 수행할 수 없습니다.

Important중요
데이터베이스 감사 설정은 새 데이터베이스에 복사되지 않습니다. 새 데이터베이스에 대해 감사가 필요한 경우 데이터베이스가 활성화되고 나서 감사를 사용하도록 설정해야 합니다. 새 데이터베이스가 원본 데이터베이스와 동일한 지역에 있는 경우 동일한 Azure 저장소 계정을 사용할 수 있습니다. 새 데이터베이스가 원본 데이터베이스와 다른 지역에 있는 경우 새 데이터베이스와 동일한 지역에 있는 저장소 계정을 사용해야 합니다. Azure SQL 데이터베이스 감사에 대한 자세한 내용은 데이터베이스 감사(영문)를 참조하세요.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘 [Top]

  1. Microsoft 계정을 사용하여 Azure 관리 포털에 로그인합니다.

  2. SQL 데이터베이스 탭으로 이동합니다.

  3. 데이터베이스 목록에서 원하는 데이터베이스를 강조 표시하고 화면 아래쪽의 명령 모음에서 복사를 클릭합니다. 그러면 데이터베이스 설정 복사 대화 상자가 열립니다. 새 데이터베이스의 이름을 지정한 후 대화 상자에서 확인을 클릭하여 복사 작업을 시작합니다.

  1. PowerShell을 시작한 후 Azure 구독에 연결합니다.

  2. Start-AzureSqlDatabaseCopy cmdlet을 사용하여 데이터베이스 복사본을 만듭니다.

    이 cmdlet의 –ContinuousCopy 매개 변수는 이 경우에 사용되지 않습니다. 이 매개 변수는 지역에서 복제를 설정하는 데만 사용됩니다. 지역에서 복제에 대한 자세한 내용은 Azure SQL 데이터베이스 비즈니스 연속성을 참조하세요.

  3. 사용 예: 이 예에서는 "Orders Copy" 데이터베이스에 "Orders" 데이터베이스를 복사합니다. 원본 데이터베이스와 복사본은 동일한 서버인 "abc"에 저장됩니다.

    PS C:\>Start-AzureSqlDatabaseCopy -ServerName "abc" -DatabaseName "Orders" -PartnerDatabase "Orders Copy"
    
    

  • 서버 수준 보안 주체 로그인 또는 복사할 데이터베이스를 만든 로그인을 사용하여 master 데이터베이스에 로그온합니다. 데이터베이스를 복사하려면 서버 수준 보안 주체가 아닌 dbmanager 역할의 구성원으로 로그인해야 합니다. 로그인 및 서버 연결에 대한 자세한 내용은 Azure SQL 데이터베이스에서 데이터베이스 및 로그인 관리Azure SQL 데이터베이스 개발: 방법 도움말 항목을 참조하세요.

  • CREATE DATABASE 문으로 원본 데이터베이스 복사를 시작합니다. 이 문을 실행하면 데이터베이스 복사 프로세스가 시작됩니다. 데이터베이스 복사는 비동기 프로세스이므로 데이터베이스 복사가 완료되기 전에 CREATE DATABASE 문이 반환됩니다.

  • sys.databasessys.dm_database_copies 뷰를 쿼리하여 복사 프로세스를 모니터링합니다.

    • 복사가 진행되는 동안 새 데이터베이스에 대해 sys.databases 뷰의 state_desc 열이 COPYING으로 설정됩니다.

    • 복사에 실패할 경우 새 데이터베이스에 대해 sys.databases 뷰의 state_desc 열이 SUSPECT로 설정됩니다. 이 경우 새 데이터베이스에서 DROP 문을 실행한 후 나중에 다시 시도합니다.

    • 복사에 성공할 경우 새 데이터베이스에 대해 sys.databases 뷰의 state_desc 열이 ONLINE으로 설정됩니다. 이 경우 복사가 완료되며 새 데이터베이스는 원본 데이터베이스에 독립적으로 변경할 수 있는 일반 데이터베이스입니다.

  • (선택 사항) 복사가 진행되는 동안 복사를 취소하려는 경우 새 데이터베이스에서 DROP DATABASE 문을 실행합니다. 원본 데이터베이스에서 DROP DATABASE 문을 실행해도 복사 프로세스가 취소됩니다.

다음 코드 예에서는 데이터베이스 복사 프로세스가 시작됩니다. 이 예에서는 Database1A가 동일한 Azure SQL 데이터베이스서버의 새 데이터베이스 Database1B로 복사됩니다.

-- Execute on the master database.
-- Start copying.
CREATE DATABASE Database1B AS COPY OF Database1A;

다음 코드 예를 사용하면 sys.databasessys.dm_database_copies 뷰에서 새 데이터베이스 Database1B에 대한 정보를 쿼리하여 데이터베이스 복사 프로세스를 모니터링할 수 있습니다.

-- Execute on the master database.
-- Retrieve state of the new database, Database1B.
SELECT name, state, state_desc FROM sys.databases WHERE name = 'Database1B'

Important중요
다음 문은 복사가 진행되는 동안에만 결과 집합을 반환합니다. 복사가 완료되고 새 데이터베이스가 온라인이면 이 쿼리가 더 이상 결과를 반환하지 않습니다.

-- Execute on the master database.
-- Retrieve copying details.
SELECT * FROM sys.dm_database_copies copies
Inner JOIN sys.databases databases ON copies.database_id = databases.database_id
      WHERE databases.name = 'Database1B';

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘 [Top]

  • 대상 서버의 master 데이터베이스에 로그온합니다. 대상 서버는 새 데이터베이스가 만들어지는 Azure SQL 데이터베이스 서버입니다. 원본 Azure SQL 데이터베이스 서버에서 원본 데이터베이스의 DBO(데이터베이스 소유자)와 동일한 이름과 암호를 가진 로그인을 사용합니다. 또한 대상 서버의 로그인은 dbmanager 역할의 구성원으로 하거나 서버 수준 보안 주체로 로그인해야 합니다. 로그인 및 서버 연결에 대한 자세한 내용은 Azure SQL 데이터베이스에서 데이터베이스 및 로그인 관리Azure SQL 데이터베이스 개발: 방법 도움말 항목을 참조하세요.

  • Azure SQL 데이터베이스 CREATE DATABASE 문으로 원본 데이터베이스 복사를 시작합니다. 대상 서버에서 이 문을 실행하면 데이터베이스 복사 프로세스가 시작됩니다. 데이터베이스 복사는 비동기 프로세스이므로 데이터베이스 복사가 완료되기 전에 CREATE DATABASE 문이 반환됩니다.

  • sys.databasessys.dm_database_copies 뷰를 쿼리하여 복사 프로세스를 모니터링합니다.

    • 복사가 진행되는 동안 새 데이터베이스에 대해 sys.databases 뷰의 state_desc 열이 COPYING으로 설정됩니다.

    • 복사에 실패할 경우 새 데이터베이스에 대해 sys.databases 뷰의 state_desc 열이 SUSPECT로 설정됩니다. 이 경우 새 데이터베이스에서 DROP 문을 실행하고 나중에 다시 시도합니다.

    • 복사에 성공할 경우 새 데이터베이스에 대해 sys.databases 뷰의 state_desc 열이 ONLINE으로 설정됩니다. 이 경우 복사가 완료되며 새 데이터베이스는 원본 데이터베이스에 독립적으로 변경할 수 있는 일반 데이터베이스입니다.

  • (선택 사항) 복사가 진행되는 동안 복사를 취소하려는 경우 새 데이터베이스에서 DROP DATABASE 문을 실행합니다. 원본 데이터베이스에서 DROP DATABASE 문을 실행해도 복사 프로세스가 취소됩니다.

  • (선택 사항) 대상 서버에서 새 데이터베이스가 온라인 상태가 된 후 ALTER USER 문을 사용하여 새 데이터베이스의 사용자를 대상 서버의 로그인에 다시 매핑합니다. 새 데이터베이스의 모든 사용자는 원본 데이터베이스에서 가졌던 사용 권한을 계속 유지합니다. 데이터베이스 복사를 시작한 사용자는 새 데이터베이스의 데이터베이스 소유자가 되며 새 SID(보안 식별자)가 할당됩니다. 복사 성공 후 다른 사용자를 다시 매핑하기 전에는 복사를 시작한 로그인인 DBO(데이터베이스 소유자)만 새 데이터베이스에 로그온할 수 있습니다.

다음 코드 예에서는 bipk56ex에서 데이터베이스 복사 프로세스가 시작됩니다. 이 예에서는 Azure SQL 데이터베이스 서버 Database1A의 데이터베이스 vipk56ex5cDatabase2A의 새 데이터베이스 Server2로 복사하는 방법에 대해 설명합니다.

-- Execute on the master database of bipk56ex
-- Start copying from Server1 to Server2
CREATE DATABASE Database2A AS COPY OF vipk56ex5c.Database1A;

다음 코드 예에서는 데이터베이스 복사 프로세스가 모니터링됩니다. 이 예에서는 Server2sys.databasessys.dm_database_copies 뷰에서 새 데이터베이스 Database2A에 대한 정보를 쿼리합니다.

Important중요
다음 문은 복사가 진행되는 동안에만 결과 집합을 반환합니다. 복사가 완료되고 새 데이터베이스가 온라인이면 이 쿼리가 더 이상 결과를 반환하지 않습니다.

-- Execute on the master database.
-- Retrieve state of the new database, Database1B.
SELECT name, state, state_desc FROM sys.databases WHERE name = 'Database1B'

Important중요
다음 문은 복사가 진행되는 동안에만 결과 집합을 반환합니다. 복사가 완료되고 새 데이터베이스가 온라인이면 이 쿼리가 더 이상 결과를 반환하지 않습니다.

-- Execute on the master database.
-- Retrieve copying details.
SELECT * FROM sys.dm_database_copies copies
Inner JOIN sys.databases databases ON copies.database_id = databases.database_id
      WHERE databases.name = 'Database1B';

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘 [Top]

복사 프로세스를 완료 전에 중지하려면 DROP DATABASE 문을 사용하여 대상 데이터베이스를 삭제합니다. 이 방법을 사용하려면 이 항목의 앞부분에 나오는 사용 권한에서 설명한 사용 권한 요구 사항을 충족하는 로그인을 사용합니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘 [Top]

  • 데이터베이스 복사가 완료되면 새 데이터베이스는 다음과 같이 두 상태 중 하나가 됩니다.

    • 복사 프로세스에 성공하면 새 데이터베이스는 ONLINE 상태가 됩니다. 온라인 상태의 새 데이터베이스는 원본 데이터베이스와 독립적으로 관리하고 사용할 수 있습니다.

    • 복사 프로세스에 실패하면 새 데이터베이스는 SUSPECT 상태가 됩니다. 주의 대상 데이터베이스는 사용할 수 없으며, 액세스하거나 복구할 수 없습니다. 이 경우 대상 데이터베이스를 삭제한 후 원본 데이터베이스를 다시 복사하세요.

    상태를 보려면 sys.databases 뷰의 state_desc 열을 쿼리합니다.

  • 복사 완료 시 새 데이터베이스의 서비스 계층, 성능 수준 및 최대 크기는 원본 데이터베이스와 동일합니다. Azure SQL 데이터베이스에서 서비스 계층 또는 성능 수준을 설정하고 변경하는 방법에 대한 자세한 내용은 데이터베이스 서비스 계층 및 성능 수준 변경을 참조하세요.

  • 서버 간 복사가 완료되면 원본 데이터베이스에 독립적으로 복사본의 로그인, 사용자 및 사용 권한을 관리할 수 있습니다. DBO 로그인과 ALTER USER 문을 사용하여 새 데이터베이스의 사용자를 새 Azure SQL 데이터베이스 서버의 로그인에 매핑합니다. 예를 들면 다음과 같습니다. ALTER USER userName WITH LOGIN='loginName'. 자세한 내용은 ALTER USER를 참조하세요.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘 [Top]

참고 항목

이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.
표시:
© 2014 Microsoft