내보내기(0) 인쇄
모두 확장

Azure SQL 데이터베이스로 데이터 마이그레이션: 도구 및 기법

업데이트 날짜: 2014년 5월

이 문서에서는 데이터 정의(스키마) 및 데이터를 Microsoft Azure SQL 데이터베이스로 마이그레이션하는 방법에 대한 지침을 제공합니다. 이러한 지침은 주로 SQL Server에서 Azure SQL 데이터베이스로의 일회성 마이그레이션에 대한 것입니다.

Microsoft Azure는 여러 데이터 저장소를 선택 옵션으로 제공하므로 하나 이상의 데이터 저장소를 프로젝트에서 사용하도록 선택할 수 있습니다.

Microsoft Azure SQL 데이터베이스는 Azure 플랫폼의 서비스로 제공되는 SQL Server 기술입니다. 클라우드 기반 Azure SQL 데이터베이스 솔루션은 신속한 프로비저닝, 비용 효율적인 확장성, 높은 가용성, 낮은 관리 오버헤드 등의 다양한 혜택을 제공할 수 있습니다. Azure SQL 데이터베이스는 온-프레미스 SQL Server 응용 프로그램에 대해 사용되는 것과 동일한 도구 및 개발 환경을 지원합니다. 따라서 대부분의 개발자에게 친숙합니다.

SQL Server와 Azure SQL 데이터베이스의 장기적인 목적은 두 기능의 조화와 균형에 있지만 현재는 데이터베이스를 Azure SQL 데이터베이스 마이그레이션하고 Azure SQL 데이터베이스 솔루션을 개발할 때 해결해야 하는 차이점이 아키텍처 및 구현에 있습니다.

따라서 데이터베이스를 Azure SQL 데이터베이스로 마이그레이션하기 전에 마이그레이션 시기 및 Azure SQL 데이터베이스와 SQL Server의 차이점을 이해하는 것이 중요합니다.

Azure 플랫폼에는 세 가지 주요 저장소가 제공됩니다. Azure 저장소에는 테이블, Blob 및 큐가 포함되어 있습니다. Azure 솔루션을 디자인할 때 다양한 옵션을 평가하고 각 저장소 메커니즘을 사용하여 솔루션 부분에 최상의 성능을 제공해야 합니다. 새로운 Azure 서비스 계층 및 기능에 대해 자세히 알아보려면 "Azure SQL 데이터베이스 서비스 계층(버전)"을 읽어 보십시오.

 

저장소 제공

용도

최대 크기

Microsoft Azure SQL 데이터베이스

관계형 데이터베이스 관리 시스템

150 GB

Azure 저장소

Blob

비디오 또는 오디오와 같은 큰 이진 개체의 영구 저장소

200GB 또는 1TB

테이블

구조적 데이터의 영구 저장소

100TB

프로세스간 메시지의 영구 저장소

100TB

로컬 저장소

인스턴스당 임시 저장소

250GB ~ 2TB

로컬 저장소는 로컬로 실행 중인 응용 프로그램에 대한 임시 저장소를 제공합니다. 로컬 저장소에는 로컬 인스턴스만 액세스할 수 있습니다. 하드웨어 오류 또는 하드웨어 유지 관리의 경우에서와 같이 인스턴스가 다른 하드웨어에서 다시 시작되는 경우에는 로컬 저장소에서 이러한 인스턴스를 허용하지 않습니다. 응용 프로그램에 안정적인 데이터 내구성이 필요하거나, 인스턴스 간에 데이터를 공유하거나, Azure 외부의 데이터에 액세스하려는 경우 Azure 저장소 계정이나 Microsoft Azure SQL 데이터베이스를 대신 사용하십시오.

Azure SQL 데이터베이스는 서버 쪽에서 실행되는 쿼리, 트랜잭션 및 저장 프로시저를 통해 데이터 처리 기능을 제공하고, 응용 프로그램에는 결과만 반환됩니다. 데이터를 처리해야 하며 크기가 제한된 데이터에 가입 및 관계 작업을 해야 하는 응용 프로그램이 있는 경우 Azure SQL 데이터베이스를 사용하는 것이 좋습니다. 그러나 응용 프로그램에서 큰 데이터 집합을 저장하고 검색하지만 데이터를 처리할 필요가 없는 경우에는 Azure 테이블 저장소를 사용하는 것이 더 좋습니다.

Azure SQL 데이터베이스 크기 제한은 현재 Premium 계층에 대해 500GB로 설정되어 있으며, Azure SQL 데이터베이스가 Azure 저장소보다 훨씬 비쌉니다. 따라서 blob 데이터를 Azure 블로그 저장소로 이동하십시오. 그러면 데이터베이스 크기 제한에 대한 압력을 줄이고 운영 비용을 줄일 수 있습니다. 새로운 Azure 서비스 계층 및 기능에 대해 자세히 알아보려면 "Azure SQL 데이터베이스 서비스 계층(버전)"을 읽어 보십시오.

SQL Server와 마찬가지로 Azure SQL 데이터베이스도 Transact-SQL 기반 데이터베이스 액세스를 위해 TDS(Tabular Data Stream) 인터페이스를 노출합니다. 따라서 데이터베이스 응용 프로그램에서 SQL Server를 사용할 때와 동일한 방법으로 Azure SQL 데이터베이스를 사용할 수 있습니다.

SQL Server 관리와 달리 Azure SQL 데이터베이스는 물리적 관리에서 논리적 관리를 추상화하므로 데이터베이스, 로그인, 사용자 및 역할은 사용자가 계속 관리하지만 하드 드라이브, 서버 및 저장소와 같은 물리적 하드웨어는 Microsoft에서 관리하고 구성합니다. Microsoft에서 모든 물리적 관리를 처리하므로 관리, 프로비저닝, Transact-SQL 지원, 프로그래밍 모델 및 기능 면에서 Azure SQL 데이터베이스와 SQL Server 간에 약간의 차이가 있습니다.

다음 목록에서는 몇 가지 주요 차이점에 대한 높은 수준의 개요를 설명합니다.

  • 데이터베이스 크기

    Azure SQL 데이터베이스는 현재 다음과 같은 버전을 제공합니다.

    • Web Edition(1 GB 및 5 GB)

    • Business Edition(10, 20, 30, 40, 50, 100, 150 GB)

    • Premium 버전은 최대 500GB의 데이터베이스를 지원합니다.

    데이터베이스가 Azure SQL 데이터베이스에서 사용하는 데이터베이스 크기 제한을 벗어나지 않는지와 데이터베이스의 크기를 확인하는 것이 중요합니다. 데이터베이스가 Azure SQL 데이터베이스 크기 제한보다 클 경우 데이터베이스를 검사하여 작은 크기로 분할할 수 있는지 또는 큰 데이터를 Azure Blob 저장소로 이동할 수 있는지 확인해야 합니다. 데이터베이스 분할에 대한 자세한 내용은 Azure SQL 데이터베이스 확장을 참조하십시오.

  • 인증

    Azure SQL 데이터베이스는 SQL 인증만 지원합니다. 응용 프로그램에서 사용되는 인증 체계를 변경해야 하는지 여부를 고려해야 합니다. 보안 제한 사항에 대한 자세한 내용은 보안 지침 및 제한 사항을 참조하십시오.

  • SQL Server 데이터베이스 버전

    Azure SQL 데이터베이스는 SQL Server 2014를 기반으로 합니다. SQL Server 2000 또는 SQL Server 2005 데이터베이스를 Azure SQL 데이터베이스로 마이그레이션하려면 데이터베이스가 SQL Server 2014와 호환되는지 확인해야 합니다. 최상의 경로는 SQL Server 2014에서 Azure SQL 데이터베이스로 마이그레이션하는 것입니다. Azure SQL 데이터베이스로 마이그레이션하기 전에 SQL Server 2014로의 내부 업그레이드를 수행할 수 있습니다. 다음은 이전 버전의 SQL Server에서 마이그레이션하는 데 도움이 되는 몇 가지 리소스입니다. SQL Server 2014로 업그레이드Microsoft SQL Server 2014 업그레이드 관리자

  • 스키마

    Azure SQL 데이터베이스는 힙을 지원하지 않습니다. 모든 테이블에 클러스터형 인덱스가 있어야 데이터를 삽입할 수 있습니다. 클러스터형 인덱스 요구 사항에 대한 자세한 내용은 Azure SQL 데이터베이스 내부를 참조하십시오.

  • Transact-SQL 지원 가능성

    Microsoft Azure SQL 데이터베이스는 Transact-SQL 언어의 하위 집합을 지원합니다. 데이터베이스를 Azure SQL 데이터베이스에 배포하기 전에 지원되는 Transact-SQL 문만 포함하도록 스크립트를 수정해야 합니다. 자세한 내용은 Transact-SQL 참조(데이터베이스 엔진)를 참조하십시오.

  • USE 문

    Azure SQL 데이터베이스에서 USE 문은 데이터베이스 간을 전환하지 않습니다. 데이터베이스를 변경하려면 데이터베이스에 직접 연결해야 합니다.

  • 가격

    Azure SQL 데이터베이스 구독 가격은 데이터베이스 수와 버전을 기반으로 산정됩니다. 또한 데이터 전송 볼륨에 대해서는 추가 비용이 발생하며, 모든 시간 데이터는 데이터 센터에서 수신하거나 전송합니다. 사용자 자신의 프레미스에서 응용 프로그램 코드를 실행하고 데이터 센터에서 Azure SQL 데이터베이스에 연결하도록 선택하거나 Azure SQL 데이터베이스와 동일한 데이터 센터에서 호스팅되는 Azure에서 응용 프로그램 코드를 실행하도록 선택할 수 있습니다. Azure에서 응용 프로그램 코드를 실행하면 추가 데이터 전송 요금이 발생하는 것을 막을 수 있습니다. 두 경우 모두, 둘 중 어느 모델로도 완화할 수 없는 인터넷 네트워크 지연 시간에 대해 알고 있어야 합니다. 자세한 내용은 가격 개요를 참조하십시오.

  • 기능 제한 사항

    일부 SQL Server 기능은 현재 Azure SQL 데이터베이스에서 지원되지 않습니다. 이러한 기능으로는 SQL 에이전트, 전체 텍스트 검색, Service Broker, 백업 및 복원, 공용 언어 런타임 및 SQL Server Integration Services가 있습니다. 자세한 목록은 SQL Server 기능 제한 사항을 참조하십시오. 백업 및 복원 옵션에 대해 자세히 알아 보려면 “Windows Azure SQL 데이터베이스 백업 및 복원”을 읽어 보십시오.

Azure SQL 데이터베이스와 같은 클라우드 기반 데이터베이스를 사용할 때는 인터넷 또는 기타 복잡한 네트워크를 통한 연결이 필요합니다. 따라서 예상치 못한 연결 끊김을 처리할 수 있도록 준비해야 합니다.

Azure SQL 데이터베이스은 공유 리소스에서 대규모 다중 테넌트 데이터베이스 서비스를 제공합니다. 모든 Azure SQL 데이터베이스 고객에게 좋은 환경을 제공하기 위해 다음과 같은 경우 서비스에 대한 연결이 닫힐 수도 있습니다.

다음은 연결 종료의 원인 목록입니다.

  • 네트워크 대기 시간

    대기 시간은 데이터를 Azure SQL 데이터베이스에 전송하는 데 걸리는 시간을 증가시킵니다. 이 문제를 완화하는 가장 좋은 방법은 여러 개의 동시 스트림을 사용하여 데이터를 전송하는 것입니다. 그러나 병렬화의 효과는 네트워크 대역폭에 의해 제한됩니다.

    Azure SQL 데이터베이스를 사용하면 여러 데이터 센터에서 데이터베이스를 만들 수 있습니다. 사용자의 위치와 네트워크 연결에 따라 사용자 위치와 각 데이터 센터 간의 네트워크 대기 시간은 달라집니다. 네트워크 대기 시간을 줄이려면 대부분의 사용자와 가장 가까이 있는 데이터 센터를 사용합니다. 네트워크 대기 시간 측정에 대한 자세한 내용은 Azure SQL 데이터베이스에 대한 클라이언트 대기 시간 테스트를 참조하십시오.

    Azure에서 응용 프로그램 코드를 호스팅하면 Azure SQL 데이터베이스에 대한 응용 프로그램의 데이터 요청과 연관된 네트워크 대기 시간이 최소화되므로 응용 프로그램의 성능이 향상됩니다.

    네트워크 왕복을 최소화하면 네트워크 관련 문제를 줄이는 데도 도움이 됩니다.

  • 데이터베이스 장애 조치(failover)

    Azure SQL 데이터베이스는 데이터 가용성 및 비즈니스 연속성을 유지하기 위해 데이터의 다중 중복 복사본을 물리적 서버에 복제합니다. 하드웨어 오류 또는 업그레이드가 발생할 경우 Azure SQL 데이터베이스는 장애 조치(failover)를 자동으로 수행하여 응용 프로그램의 가용성을 최적화합니다. 현재 일부 장애 조치(failover) 작업을 수행하면 세션이 예기치 않게 종료될 수 있습니다.

  • 부하 분산

    Azure SQL 데이터베이스의 부하 분산 장치는 데이터 센터에서 물리적 서버 및 서비스의 최적 사용을 보장합니다. 시스템에 대한 CPU 사용률, I/O(입력/출력) 대기 시간 또는 작업 중인 작업자 수가 임계값을 초과하는 경우 Azure SQL 데이터베이스는 트랜잭션을 종료하고 세션과의 연결을 끊을 수도 있습니다.

  • 조정

    모든 구독자가 적절한 양의 리소스를 수신하고 특정 구독자가 리소스를 독점하지 않도록 하기 위해 Azure SQL 데이터베이스는 특정 조건에서 구독자 연결을 닫거나 "조정"할 수 있습니다. Azure SQL 데이터베이스 엔진 조정 서비스는 지속적으로 특정 성능 임계값 모니터링하여 특정 구독자가 시스템 상태에 영향을 미치는 범위에 따라 다양한 수준의 조정을 이러한 사용자에 대해 시작할 수 있습니다.

    Azure SQL 데이터베이스 엔진 조정 서비스는 다음과 같은 성능 임계값을 모니터링합니다.

    • 사용 중인 Azure SQL 데이터베이스 물리적 데이터베이스에 할당된 공간의 백분율, 소프트 및 하드 한도 백분율이 동일합니다.

    • 사용 중인 Azure SQL 데이터베이스 로그 파일에 할당된 공간의 백분율. 로그 파일은 구독자 간에 공유됩니다. 소프트 및 하드 한도 백분율이 다릅니다.

    • 로그 드라이브에 쓸 때의 지연 시간(밀리초). 소프트 및 하드 한도 백분율이 다릅니다.

    • 로그 드라이브에 쓸 때의 지연 시간(밀리초). 소프트 및 하드 한도 백분율이 동일합니다.

    • 프로세서 사용량. 소프트 및 하드 한도 백분율이 동일합니다.

    • 데이터베이스 구독에 허용되는 최대 크기를 기준으로 한 개별 데이터베이스 크기. 소프트 및 하드 한도 백분율이 동일합니다.

    • 데이터베이스에 대한 활성 요청을 처리하는 총 작업자 수. 소프트 및 하드 한도 백분율이 다릅니다. 이 임계값을 초과하는 경우 차단할 데이터베이스를 선택하는 기준은 다른 임계값의 경우와 다릅니다. 최대 작업자 수를 사용하는 데이터베이스는 트래픽 속도가 가장 빠른 데이터베이스 대신 후보를 조정할 가능성이 더 높습니다.

자세한 내용은 Azure SQL 데이터베이스 연결 관리Azure SQL 데이터베이스 성능 및 탄력성 가이드를 참조하십시오.

연결 끊김을 처리하는 가장 좋은 방법은 연결을 다시 설정하고 실패한 명령 또는 쿼리를 다시 실행하는 것입니다. 자세한 내용은 일시적인 오류 처리 프레임워크를 참조하십시오.

다음은 데이터베이스의 마이그레이션 성능을 향상시키기 위해 수행할 수 있는 몇 가지 작업입니다.

  • 비클러스터형 인덱스의 생성을 지연하거나 비클러스터형 인덱스를 사용하지 않도록 설정합니다. 데이터 로드 전에 생성된 추가 인덱스로 인해 같은 양의 데이터를 로드하는 데 걸리는 시간이 크게 늘어날 수 있습니다.

  • 트리거를 해제하고 검사를 제한합니다. 테이블에 행이 삽입될 때 트리거가 발생하여 다른 테이블에 행이 다시 삽입될 수 있습니다. 트리거는 지연을 발생시킬 수 있고 삽입이 두 번 발생하는 것은 사용자가 원하지 않을 수 있습니다.

  • 가져올 데이터를 테이블의 클러스터형 인덱스에 따라 정렬하면 대량 가져오기 성능이 향상됩니다. 자세한 내용은 데이터 대량 가져오기 중 정렬 순서 제어를 참조하십시오.

SSIS(SQL Server Integration Services) 및 BCP 유틸리티를 사용하면 큰 데이터 마이그레이션을 손쉽게 수행할 수 있습니다.

큰 데이터를 Azure SQL 데이터베이스에 로드할 경우 데이터를 여러 개의 동시 스트림으로 분할하면 최상의 성능을 얻을 수 있습니다.

기본적으로 데이터 파일의 모든 행은 하나의 일괄 처리로 가져옵니다. 여러 개의 일괄 처리에 행을 배포하려면 일괄 처리를 사용할 수 있을 때마다 일괄 처리 크기를 지정합니다. 일괄 처리에 대한 트랜잭션이 실패하면 현재 일괄 처리에서 삽입한 내용만 롤백됩니다. 커밋된 트랜잭션으로 이미 가져온 일괄 처리는 나중에 발생한 오류의 영향을 받지 않습니다. 최적의 일괄 처리 크기를 확인하려면 해당 시나리오 및 환경에 대해 다양한 일괄 처리 크기 설정을 테스트하는 것이 좋습니다.

데이터베이스를 Azure SQL 데이터베이스로 마이그레이션하는 데 사용할 수 있는 도구는 여러 가지가 있습니다. 일반적으로 데이터베이스 마이그레이션에는 스키마 마이그레이션과 데이터 마이그레이션이 있는데, 둘 중 하나를 지원하는 도구와 둘 다 지원하는 도구가 있습니다. 또한 대량 복사 API를 사용하여 사용자 지정 데이터 업로드 응용 프로그램을 만들 수도 있습니다.

 

도구

스키마

Azure SQL 데이터베이스 호환성 검사

Data

데이터 전송 효율성

참고

DAC 패키지

아니요

해당 없음

  • 데이터를 제외한 모든 데이터베이스 개체를 포함한 엔터티

  • 전체 Azure SQL 데이터베이스 지원

DAC BACPAC 가져오기 내보내기

좋음

  • DAC 프레임워크를 사용하여 DAC와 데이터 내보내기/가져오기

  • 클라우드 전용 서비스 지원 사용 가능

  • CodePlex의 SQL DAC 예

SSMS 스크립트 생성 마법사

약간

나쁨

  • Azure SQL 데이터베이스 스크립트 생성에 대한 명시적 옵션 있음

  • 작은 데이터베이스에 적합함

bcp

아니요

해당 없음

좋음

  • 기존 테이블에 데이터의 효율적인 전송

  • 각 bcp 명령이 테이블 한 개 전송

Azure SQL 데이터베이스마이그레이션 마법사

좋음

  • 유용한 기능(예: 추적 파일 평가)

  • CodePlex의 오픈 소스

  • Microsoft에서 지원하지 않음

SQL Server Integration Services

아니요

해당 없음

좋음

  • 최고의 유연성

  • 파일을 연결하지 않고 데이터 원본 간에 직접 전송

SQL Server 가져오기 및 내보내기 마법사

아니요

해당 없음

좋음

  • SSIS 위의 단순 UI(SSMS에서도 사용할 수 있음)

Azure SQL 데이터베이스 Migration Assistant를 사용하여 데이터베이스를 Access, MySQL, Oracle, Sybase에서 Azure SQL 데이터베이스로 마이그레이션할 수 있습니다.

Microsoft 코드명 "Data Transfer"는 CSV 또는 Excel 파일의 데이터를 Azure SQL 데이터베이스로 전송할 수 있습니다.

한 Azure SQL 데이터베이스에서 다른 Azure SQL 데이터베이스로 데이터를 마이그레이션하려는 경우 Azure SQL 데이터베이스 복사를 사용할 수 있습니다.

Azure SQL 데이터베이스는 데이터베이스 복사 기능을 지원합니다. 이 기능을 사용하면 Azure SQL 데이터베이스에서 기존 데이터베이스를 복사하여 트랜잭션에서 일관된 새 데이터베이스를 만들 수 있습니다. 데이터베이스를 복사하려면 새 데이터베이스를 만들 Azure SQL 데이터베이스 서버의 master 데이터베이스에 연결하고 CREATE DATABASE 명령을 사용해야 합니다.

CREATE DATABASE destination_database_name AS COPY OF 
[source_server_name.]source_database_name

새 데이터베이스는 동일한 서버에 배치하거나 다른 서버에 배치할 수 있습니다. 이 문을 실행하는 사용자는 대상 서버에서는 새 데이터베이스를 만들 수 있는 dbmanager 역할에 속해야 하고 원본 데이터베이스에서는 dbowner 역할에 속해야 합니다. 자세한 내용은 Azure SQL 데이터베이스에서 데이터베이스 복사를 참조하십시오.

DAC(데이터 계층 응용 프로그램)는 Visual Studio 2010의 개발자 도구 지원과 함께 SQL Server 2008 R2에 처음 도입되었습니다. DAC는 다른 서버에 배포할 데이터베이스의 스키마, 코드 및 구성을 패키지하는 데 유용합니다. DAC를 배포할 준비가 되면 DAC 정의를 XML 형식으로 포함하는 압축 파일인 DAC 패키지(.bacpac)에 DAC가 빌드됩니다. SQL Server Management Studio에서 데이터베이스 스키마를 DAC 패키지로 내보낸 다음 이 패키지를 Azure SQL 데이터베이스에 배포할 수 있습니다.

note참고
DACPAC 형식은 BACPAC 형식과 다릅니다. BACPAC 형식은 표준 .dacpac 파일 콘텐츠 외에도 메타데이터 파일 및 JSON(JavaScript Object Notation)으로 인코딩된 테이블 데이터를 포함하도록 DACPAC 형식을 확장합니다. BACPAC 형식은 DAC 가져오기 내보내기 섹션에서 설명합니다.

DAC 패키지를 배포하기 전에 Visual Studio 2010을 사용하여 수정할 수 있습니다. DAC 프로젝트 내에서 배포 전 및 배포 후 스크립트를 지정할 수 있습니다. 이러한 스크립트는 배포 후 스크립트에 데이터를 삽입하는 작업을 비롯한 모든 작업을 수행할 수 있는 Transact-SQL 스크립트입니다. 그러나 DAC 패키지를 사용하여 많은 양의 데이터를 삽입하는 것은 권장되지 않습니다.

DAC는 SQL Server 20008 R2와 함께 제공됩니다. SQL Server 데이터베이스 스키마를 Azure SQL 데이터베이스로 마이그레이션하는 작업은 다음과 같은 두 개의 기본 단계로 구성되어 있습니다.

  1. SQL Server 데이터베이스에서 DAC 패키지 추출:

    데이터 계층 응용 프로그램 추출 마법사를 사용하여 기존 데이터베이스를 기반으로 DAC 패키지를 빌드할 수 있습니다. DAC 패키지에는 데이터베이스에서 선택한 개체 및 연결된 인스턴스 수준 개체(예: 데이터베이스 사용자에 매핑되는 로그인)가 포함됩니다.

    다음은 이 마법사의 시작 화면 스크린샷입니다.



    이 마법사는 다음과 같은 기본 단계로 구성되어 있습니다.

    1. DAC 응용 프로그램 이름, 버전, 설명 및 패키지 파일 위치를 비롯한 DAC 속성을 설정합니다.

    2. 모든 데이터베이스 개체가 DAC에서 지원되는지 확인합니다.

    3. 패키지를 빌드합니다.

    DAC는 Azure SQL 데이터베이스 또는 SQL Server 2005 서비스 팩 4(SP4) 이상에서만 데이터베이스에서 추출할 수 있습니다. DAC 또는 포함된 사용자가 지원하지 않는 개체가 데이터베이스에 있는 경우 DAC를 추출할 수 없습니다. DAC에서 지원되는 개체의 유형에 대한 자세한 내용은 SQL Server 개체 및 버전에 대한 DAC 지원을 참조하십시오.

  2. Azure SQL 데이터베이스에 DAC 패키지 배포:

    데이터 계층 응용 프로그램 배포 마법사를 사용하여 DAC 패키지를 배포할 수 있습니다. 먼저 SQL Server Management Studio에서 Azure SQL 데이터베이스 서버에 연결해야 합니다. 데이터베이스가 없으면 마법사가 데이터베이스를 만듭니다. 이 마법사는 개체 탐색기 계층에서 선택한 노드와 연결된 데이터베이스 엔진에 DAC 패키지를 배포합니다. 예를 들어 다음 스크린샷에서는 maqqarly23.database.windows.net이라는 SQL Server에 패키지를 배포합니다.

    Important중요
    특히 배포할 DAC 패키지가 사용자의 조직에서 개발되지 않은 경우, 패키지를 프로덕션 환경에 배포하기 전에 패키지의 콘텐츠를 검토하는 것이 좋습니다. 자세한 내용은 DAC 패키지의 유효성 검사를 참조하십시오.

    이 마법사는 다음과 같은 기본 단계로 구성되어 있습니다.

    1. DAC 패키지를 선택합니다.

    2. 패키지 콘텐츠의 유효성을 검사합니다.

    3. Azure SQL 데이터베이스를 지정하는 데이터베이스 배포 속성을 구성합니다.

    4. 패키지를 배포합니다.

마법사를 사용하는 대신 dacstore.install() 메서드와 함께 PowerShell을 사용하여 스키마를 Azure SQL 데이터베이스로 마이그레이션할 수 있습니다.

DAC(데이터 계층 응용 프로그램)는 데이터 계층 개체를 개발, 배포 및 관리하는 자체 포함 단위입니다. DAC를 사용하면 데이터 계층 개발자 및 데이터베이스 관리자가 데이터베이스 개체 및 인스턴스 개체를 비롯한 Microsoft SQL Server 개체를 DAC 패키지(.dacpac 파일)라고 하는 단일 엔터티로 패키지할 수 있습니다. BACPAC 형식은 표준 .dacpac 파일 콘텐츠 외에도 메타데이터 파일 및 JSON(JavaScript Object Notation)으로 인코딩된 테이블 데이터를 포함하도록 DACPAC 형식을 확장합니다. SQL Server 데이터베이스를 .bacpac 파일로 패키지하고 이 파일을 사용하여 데이터베이스를 Azure SQL 데이터베이스로 마이그레이션할 수 있습니다.

note참고
DACPAC와 BACPAC는 비슷하지만 실제로는 매우 다른 시나리오를 대상으로 합니다. DACPAC는 스키마를 캡처하고 배포하는 데 중점을 두기 때문에 주로 데이터베이스를 개발, 테스트 및 프로덕션 환경에 배포하는 데 사용됩니다.

BACPAC는 스키마 및 데이터를 캡처하는 데 중점을 둡니다. BACPAC는 논리적으로 데이터베이스 백업과 동일하며 기존 데이터베이스를 업그레이드하는 데 사용할 수 없습니다. BACPAC는 주로 한 서버에서 다른 서버(또는 Azure SQL 데이터베이스)로 데이터베이스를 이동하고 기존 데이터베이스를 개방형 형식으로 보관하는 데 사용됩니다.

일반적으로 Azure SQL 데이터베이스 서비스 가져오기 및 내보내기를 사용할 수 있습니다. 이 서비스는 Azure SQL 데이터베이스와 Azure Blob 저장소 간에 BACPAC 파일을 직접 가져오거나 내보낼 수 있습니다. Azure SQL 데이터베이스에 대한 가져오기 및 내보내기 서비스는 요청 제출에 사용할 수 있는 몇 가지 공용 REST 끝점을 제공합니다.

Azure 플랫폼 관리 포털에는 Azure SQL 데이터베이스에 대한 가져오기 및 내보내기 서비스를 호출하는 인터페이스가 있습니다.

SQL Server Management Studio는 현재 데이터베이스를 BACPAC 파일로 내보내는 것을 지원하지 않습니다. 따라서 DAC API를 사용하여 데이터를 가져오고 내보낼 수 있습니다.

SQL DAC 예에서는 데이터 계층 응용 프로그램 프레임워크 API를 사용하여 데이터베이스를 SQL Server에서 Azure SQL 데이터베이스로 마이그레이션하는 방법을 보여 줍니다. 이 패키지는 다음과 같은 두 개의 명령줄 유틸리티와 해당 원본 코드를 제공합니다.

  • DAC 가져오기 및 내보내기 클라이언트 쪽 도구를 사용하여 bacpac 파일을 내보내고 가져올 수 있습니다.

  • DAC 가져오기 및 내보내기 서비스 클라이언트를 사용하여 Azure SQL 데이터베이스에 대한 가져오기 및 내보내기 서비스를 호출하여 Azure Blob 저장소와 Azure SQL 데이터베이스 간에 bacpac 파일을 가져오고 내보낼 수 있습니다.

    Azure Blob 저장소에 bacpac 파일을 복사하는 한 가지 방법은 Microsoft 코드명 “Data Transfer”를 사용하는 것입니다. 자세한 내용은 Microsoft 코드명 Data Transfer 섹션을 참조하십시오.

note참고
DAC(데이터 계층 응용 프로그램) 프레임워크를 사용하여 Azure SQL 데이터베이스에서 데이터를 가져오고 내보내는 기능은 현재 CodePlex 예로만 사용할 수 있습니다. 이 도구는 커뮤니티에서만 지원됩니다.

이 섹션에서는 SQL DAC 예의 클라이언트 도구를 사용하여 데이터베이스를 SQL Server에서 Azure SQL 데이터베이스로 마이그레이션하는 방법을 보여 줍니다.

SQL DAC 예는CodePlex에서 다운로드할 수 있습니다. 샘플을 실행하려면 컴퓨터에 데이터 계층 응용 프로그램 프레임워크도 설치해야 합니다.

이 도구를 사용하여 데이터베이스를 마이그레이션하기 전에 먼저 대상 Azure SQL 데이터베이스를 만들어야 합니다. 이 도구를 사용하여 마이그레이션을 수행하는 작업은 다음과 같은 두 단계로 구성되어 있습니다.

  1. SQL Server 데이터베이스 내보내기

    사용자가 보안 액세스를 통합한 데이터베이스가 SQL Server 2014에서 실행 중인 것으로 가정합니다. 이 데이터베이스는 다음 인수로 샘플 EXE를 호출하여 ".bacpac" 파일로 내보낼 수 있습니다.

    DacCli.exe -s serverName -d databaseName -f C:\filePath\exportFileName.bacpac -x -e
    
  2. 패키지를 Azure SQL 데이터베이스

    내보낸 후에는 다음 인수를 사용하여 내보내기 파일을 Azure SQL 데이터베이스로 가져올 수 있습니다.

    DacCli.exe -s serverName.database.windows.net -d databaseName -f C:\filePath\exportFileName.bacpac -i -u userName -p password
    

스크립트 생성 마법사를 사용하여 선택한 데이터베이스 내에서 SQL Server 데이터베이스 및/또는 관련 개체에 대한 Transact-SQL 스크립트를 만들 수 있습니다. 그런 다음 이 스크립트를 사용하여 스키마 및/또는 데이터를 Azure SQL 데이터베이스에 전송할 수 있습니다.

스크립트 생성 마법사는 SQL Server 2008 R2와 함께 설치됩니다. 이 마법사는 SQL Server Management Studio 2008 R2에서 열 수 있습니다. 다음 스크린샷은 이 마법사를 여는 방법을 보여 줍니다.

이 마법사는 다음과 같은 기본 단계로 구성되어 있습니다.

  1. 내보낼 개체를 선택합니다.

  2. 스크립팅 옵션을 설정합니다. 스크립트를 파일, 클립보드 또는 새 쿼리 창에 저장하거나 웹 서비스에 게시할 수 있습니다.

  3. 고급 스크립팅 옵션을 설정합니다.

    기본적으로 스크립트는 독립 실행형 SQL Server 인스턴스에 대해 생성됩니다. 구성을 변경하려면 스크립팅 옵션 설정 대화 상자에서 고급 단추를 클릭한 다음 데이터베이스 엔진 유형에 대한 스크립트 속성을 SQL 데이터베이스로 설정해야 합니다.



    또한 스크립팅할 데이터 형식을 요구 사항에 따라 다음 중 하나로 설정할 수도 있습니다. 스키마만, 데이터만, 스키마 및 데이터.

스크립트를 만든 후 데이터베이스를 전송할 Azure SQL 데이터베이스에 대해 스크립트를 실행하기 전에 스크립트를 수정할 수 있습니다.

bcp 유틸리티는 SQL Server 또는 Azure SQL 데이터베이스로의 대용량 업로드 성능을 향상시키기 위해 디자인된 명령줄 유틸리티로, 마이그레이션 도구가 아닙니다. 이 유틸리티는 스키마를 추출하거나 생성하지 않습니다. 먼저 스키마 마이그레이션 도구 중 하나를 사용하여 스키마를 Azure SQL 데이터베이스에 전송해야 합니다.

note참고
bcp를 사용하여 Azure SQL 데이터베이스에 데이터를 백업 및 복원할 수 있습니다.

note참고
Azure SQL 데이터베이스 마이그레이션 마법사는 bcp를 사용합니다.

bcp 유틸리티는 SQL Server와 함께 제공됩니다. SQL Server 2014와 함께 제공되는 버전은 Azure SQL 데이터베이스에서 완벽하게 지원됩니다.

bcp를 사용하는 작업은 다음과 같은 두 단계로 구성되어 있습니다.

  1. 데이터 파일로 데이터를 내보냅니다.

    SQL Server 데이터베이스에서 데이터를 내보내려면 명령 프롬프트에서 다음 문을 실행하면 됩니다.

    bcp tableName out C:\filePath\exportFileName.dat –S serverName –T –n -q
    
    out 매개 변수는 SQL Server에서 데이터를 복사함을 나타냅니다. -n 매개 변수는 데이터의 기본 데이터베이스 데이터 형식을 사용하여 대량 복사 작업을 수행합니다. -q 매개 변수는 bcp 유틸리티와 SQL Server 인스턴스 간의 연결에서 SET QUOTED_IDENTIFIERS ON 문을 실행합니다.

  2. 데이터 파일을 Azure SQL 데이터베이스

    Azure SQL 데이터베이스로 데이터를 가져오려면 먼저 대상 데이터베이스에서 스키마를 만든 다음 명령 프롬프트에서 bcp 유틸리티를 실행해야 합니다.

    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b batchSize
    
    –b 매개 변수는 가져온 데이터의 일괄 처리당 행 수를 지정합니다. 각 일괄 처리는 커밋되기 전에 전체 일괄 처리를 가져오는 별도의 트랜잭션으로 가져오고 기록합니다. 최상의 일괄 처리 크기를 찾아서 사용하면 데이터 마이그레이션 중에 Azure SQL 데이터베이스와의 연결이 끊기는 것을 줄일 수 있습니다.

다음은 bcp를 사용하여 많은 양의 데이터 전송할 때의 몇 가지 모범 사례입니다.

  1. 데이터 형식 변환이 필요 없도록 –N 옵션을 사용하여 기본 모드에서 데이터를 전송합니다.

  2. –b 옵션을 사용하여 일괄 처리 크기를 지정합니다. 기본적으로 데이터 파일의 모든 행은 하나의 일괄 처리로 가져옵니다. 트랜잭션이 실패하면 현재 일괄 처리에서 삽입한 내용만 롤백됩니다.

  3. –h “TABLOCK, ORDER(…)” 옵션을 사용합니다. –h “TABLOCK”은 대량 로드 작업이 진행되는 동안 대량 업데이트 테이블 수준 잠금이 사용되도록 지정합니다. 그렇지 않으면 행 수준 잠금이 사용됩니다. 따라서 테이블의 잠금 경합을 줄일 수 있습니다. –h “ORDER(…)” 옵션은 데이터 파일에서 데이터의 정렬 순서를 지정합니다. 가져올 데이터를 테이블의 클러스터형 인덱스에 따라 정렬하면 대량 가져오기 성능이 향상됩니다.

–F 및 –L 옵션을 사용하여 업로드할 플랫 파일의 첫 번째 및 마지막 행을 지정할 수 있습니다. 이 방법은 데이터 파일을 물리적으로 분할하지 않고도 다중 스트림을 통해 파일을 업로드하는 데 유용합니다.

Azure SQL 데이터베이스 마이그레이션 마법사는 SQL Server 2005/2008 이상 데이터베이스를 Azure SQL 데이터베이스로 마이그레이션하는 데 도움이 되는 원본 열기 UI 도구입니다. 이 도구는 데이터 마이그레이션 외에도 호환성 문제를 식별하고, 가능한 경우 이러한 호환성 문제를 해결하며, 확인된 모든 문제를 사용자에게 알려 줍니다.

Azure SQL 데이터베이스 마이그레이션 마법사에는 연결 끊김을 처리하는 기본 제공 논리가 있습니다. 이 마법사는 트랜잭션을 여러 개의 더 작은 트랜잭션으로 분할하고 Azure SQL 데이터베이스가 연결을 끊을 때까지 실행됩니다. 연결 오류가 발생하면 이 마법사는 Azure SQL 데이터베이스와의 새 연결을 다시 설정하고 마지막으로 성공한 명령 이후에 처리를 선택합니다. 마찬가지로 bcp를 사용하여 데이터를 Azure SQL 데이터베이스에 업로드할 때도 이 마법사는 데이터를 더 작은 섹션으로 분할하고 재시도 논리를 사용하여 연결이 닫히기 전에 성공적으로 업로드된 마지막 레코드를 확인합니다. 그러면 bcp에서 그 다음 레코드 집합으로 데이터 업로드를 다시 시작합니다.

note참고
Azure SQL 데이터베이스 마이그레이션 마법사는 커뮤니티에서 빌드하고 지원하는 오픈 소스 도구입니다.

The Azure SQL 데이터베이스 마이그레이션 마법사는 http://sqlazuremw.codeplex.com에서 다운로드할 수 있습니다. 로컬 컴퓨터에 패키지의 압출을 풀고 SQLAzureMW.exe를 실행합니다. 다음은 이 응용 프로그램의 스크린샷입니다.

이 마법사는 다음과 같은 단계로 구성되어 있습니다.

  1. 마법사를 통해 수행할 프로세스를 선택합니다.

  2. 스크립팅할 원본을 선택합니다.

  3. 스크립팅할 데이터베이스 개체를 선택합니다.

  4. 스크립트를 생성합니다. 나중에 스크립트를 수정할 수도 있습니다.

  5. 대상 서버에 연결하는 데 필요한 정보를 입력합니다. 대상 Azure SQL 데이터베이스를 만들 수도 있습니다.

  6. 대상 서버에 대해 스크립트를 실행합니다.

SSIS(SQL Server Integration Services)를 사용하여 다양한 데이터 마이그레이션 작업을 수행할 수 있습니다. 이 도구는 유형이 다른 여러 데이터 원본 및 대상을 처리할 때 유용합니다. 이 도구는 원본과 대상 간의 복잡한 워크플로 및 데이터 변환에 대한 지원을 제공합니다. SSIS는 Azure SQL 데이터베이스와 유사한 Azure 서비스로 사용할 수 없습니다. 온-프레미스 SQL Server에서 SSIS 패키지를 실행하여 데이터를 Azure SQL 데이터베이스로 전송할 수 있습니다. 또한 Azure 가상 컴퓨터에서 실행 중인 SQL Server에서 SSIS 패키지를 실행하여 데이터를 Microsoft Azure SQL 데이터베이스로 전송할 수 있습니다. 그러나 SQL IaaS는 SSIS 호스팅의 옵션입니다.

SSIS 가져오기/내보내기 마법사를 사용하면 단일 데이터 원본의 데이터를 변환하지 않고도 대상으로 이동하는 패키지를 만들 수 있습니다. 이 마법사는 텍스트 파일과 기타 SQL Server 인스턴스를 비롯한 데이터를 다양한 원본 유형에서 다양한 대상 유형으로 신속하게 이동할 수 있습니다. 자세한 내용은 "방법: 통합 서비스를 사용하여 Azure SQL 데이터베이스로 데이터베이스 마이그레이션"을 참조하십시오.

SSIS의 SQL Server 2008 R2 이상 버전을 사용하여 Azure SQL 데이터베이스에 연결해야 합니다.

ADO.NET 어댑터에는 Azure SQL 데이터베이스에 대한 필수 지원이 포함되어 있습니다. 이 어댑터는 Azure SQL 데이터베이스를 위해 특별히 대량 로드 데이터에 대한 옵션을 제공합니다. ADO.NET 대상 어댑터를 사용하여 데이터를 Azure SQL 데이터베이스에 전송할 수 있습니다. OLEDB를 사용하여 Microsoft Azure SQL 데이터베이스에 연결하는 작업은 지원되지 않습니다.

조정 또는 네트워크 문제로 인해 패키지가 실패할 수 있으므로 패키지가 실패할 경우 패키지를 다시 시작하는 것이 아니라 실패 지점에서 패키지가 재개되도록 패키지를 디자인할 수 있습니다. 자세한 내용은 "Azure 및 하이브리드 데이터 이동을 위한 SSIS"를 참조하십시오.

ADO.NET 대상을 구성할 때는 “가능할 경우 대량 삽입 사용” 옵션을 사용해야 합니다. 그러면 대량 로드 기능을 사용하여 전송 성능을 향상시킬 수 있습니다. . 자세한 내용은 "SSIS 작업 및 조정 가이드"를 참조하십시오.

SQL Server 가져오기 및 내보내기 마법사는 간단한 가져오기 또는 내보내기를 위한 SQL Server Integration Services 패키지를 만들 수 있는 가장 간단한 방법을 제공합니다. 자세한 내용은 "방법: 가져오기 및 내보내기 마법사를 사용하여 Azure SQL 데이터베이스로 데이터베이스 마이그레이션"을 참조하십시오.

이 마법사는 다음과 같은 데이터 원본을 지원합니다.

  • .NET Framework Data Provider for ODBC

  • .NET Framework Data Provider for Oracle

  • .NET Framework Data Provider for SQL Server

  • 플랫 파일 원본

  • Microsoft OLE DB Provider for Analysis Services 10.0

  • Microsoft OLE DB Provider for Search

  • Microsoft OLE DB Provider for SQL Server

  • SQL Native Client

  • SQL Server Native Client 10.0

SQL Server 가져오기 및 내보내기 마법사는 데이터만 전송할 수 있습니다. 이 마법사를 사용하기 전에 스키마 마이그레이션 도구, 스크립트 생성 마법사 또는 DAC 패키지 중 하나를 사용하여 스키마를 전송해야 합니다.

note참고
64비트 컴퓨터에서는 Integration Services가 64비트 버전의 SQL Server 가져오기 및 내보내기 마법사(DTSWizard.exe)를 설치합니다. 하지만 일부 데이터 원본은 32비트 공급자만 제공합니다. 이러한 데이터 원본을 사용하려면 32비트 버전의 마법사를 설치하여 실행해야 합니다. 이 마법사의 32비트 버전을 설치하려면 설치 도중 클라이언트 도구 또는 Business Intelligence Development Studio를 선택합니다.

Microsoft 코드명 "Data Transfer"는 컴퓨터에서 Azure SQL 데이터베이스 또는 Azure Blob 저장소로 데이터를 전송할 수 있는 클라우드 서비스입니다. Azure Blob 저장소에는 모든 데이터 형식을 업로드할 수 있고 Azure SQL 데이터베이스에는 CSV(쉼표로 구분된 값) 또는 Microsoft Excel 형식(.xlsx)으로 저장된 데이터를 업로드할 수 있습니다. Azure SQL 데이터베이스에 데이터를 업로드하면 데이터가 데이터베이스 테이블로 변환됩니다.

데이터 전송 서비스는 https://web.datatransfer.azure.com/에서 액세스할 수 있습니다. 이 홈 페이지에는 데이터 가져오기 옵션과 데이터 집합 및 저장소 관리 옵션이 있습니다.

Azure SQL 데이터베이스로 데이터 가져오기 프로세스는 다음과 같은 단계로 구성되어 있습니다.

  • Azure SQL 데이터베이스 자격 증명을 입력합니다.

  • 전송할 파일을 선택합니다.

  • 데이터 파일을 분석한 다음 데이터를 전송합니다.

SSMA(SQL Server Migration Assistant)는 Oracle, Sybase, MySQL 및 Microsoft Access 데이터베이스를 Azure SQL 데이터베이스 또는 SQL Server로 마이그레이션할 때 발생하는 비용과 위험을 줄여주는 제품군입니다. SSMA는 마이그레이션 테스트뿐만 아니라 마이그레이션 평가 분석, 스키마 및 SQL 문 변환, 데이터 마이그레이션을 비롯한 마이그레이션의 모든 측면을 자동화합니다.

SSMA는 웹 다운로드입니다. 최신 버전을 다운로드하려면 SQL Server 마이그레이션 도구 제품 페이지를 참조하십시오. 이 문서의 작성일 기준 최신 버전은 다음과 같습니다.

SSMS는 Windows Installer 기반 마법사를 사용하여 설치됩니다. SSMA는 무료이지만 등록 키를 다운로드해야 합니다. SSMA를 설치하고 실행하면 해당 SSMA를 등록하고 등록 키를 다운로드하라는 메시지가 표시됩니다.

Access용 SSMA의 마이그레이션 프로세스는 다음과 같은 단계로 구성되어 있습니다.

  1. 새 마이그레이션 마법사를 만듭니다. 마이그레이션 대상 상자에서 Azure SQL 데이터베이스를 선택합니다.

  2. Access 데이터베이스를 추가합니다.

  3. 마이그레이션할 Access 개체를 선택합니다.

  4. Azure SQL 데이터베이스에 연결합니다.

  5. 테이블을 링크합니다. Azure SQL 데이터베이스에서 기존 Access 응용 프로그램을 사용하려면 원래 Access 테이블을 마이그레이션된 Azure SQL 데이터베이스 테이블에 링크하면 됩니다. 테이블을 링크하면 쿼리, 폼, 보고서 및 데이터 액세스 페이지에서 Access 데이터베이스의 데이터 대신 Azure SQL 데이터베이스의 데이터를 사용하도록 Access 데이터베이스가 수정됩니다.

  6. 선택한 개체를 변환합니다.

  7. 변환된 개체를 Azure SQL 데이터베이스에 로드합니다.

  8. 선택한 Access 개체에 대한 데이터를 마이그레이션합니다.

참고 항목

표시:
© 2014 Microsoft