Windows Azure SQL 데이터베이스로 데이터 마이그레이션: 도구 및 방법
이 문서에서는 데이터 정의(스키마) 및 데이터를 Windows Azure SQL 데이터베이스로 마이그레이션하는 방법에 대한 지침을 제공합니다. 이러한 지침은 주로 SQL Server에서 SQL 데이터베이스로의 일회성 마이그레이션에 대한 것입니다. 진행 중인 데이터 공유 및 SQL 데이터베이스 백업에 대해서는 SQL 데이터 동기화 개요를 참조하십시오.
마이그레이션 고려 사항
Microsoft Windows Azure는 여러 데이터 저장소를 선택 옵션으로 제공하므로 하나 이상의 데이터 저장소를 프로젝트에서 사용하도록 선택할 수 있습니다.
Windows Azure SQL 데이터베이스는 Windows Azure 플랫폼의 서비스로 제공되는 SQL Server 기술입니다. 클라우드 기반 SQL 데이터베이스 솔루션은 신속한 프로비저닝, 비용 효율적인 확장성, 높은 가용성, 낮은 관리 오버헤드 등의 다양한 혜택을 제공할 수 있습니다. SQL 데이터베이스는 내부 SQL Server 응용 프로그램에 대해 사용되는 것과 동일한 도구 및 개발 환경을 지원합니다. 따라서 대부분의 개발자에게 친숙합니다.
SQL Server와 SQL 데이터베이스의 장기적인 목적은 두 기능의 조화와 균형에 있지만 현재는 데이터베이스를 SQL 데이터베이스 마이그레이션하고 SQL 데이터베이스 솔루션을 개발할 때 해결해야 하는 차이점이 아키텍처 및 구현에 있습니다.
따라서 데이터베이스를 SQL 데이터베이스로 마이그레이션하기 전에 마이그레이션 시기 및 SQL 데이터베이스와 SQL Server의 차이점을 이해하는 것이 중요합니다.
마이그레이션 시기
Windows Azure 플랫폼에는 세 가지 주요 저장소가 제공됩니다. Windows Azure 저장소에는 테이블, Blob 및 큐가 포함되어 있습니다. Windows Azure 솔루션을 디자인할 때 다양한 옵션을 평가하고 각 저장소 메커니즘을 사용하여 솔루션 부분에 최상의 성능을 제공해야 합니다.
|
저장소 제공 |
용도 |
최대 크기 |
|
|
Windows Azure SQL 데이터베이스 |
관계형 데이터베이스 관리 시스템 |
150GB |
|
|
Windows Azure 저장소 |
Blob |
비디오 또는 오디오와 같은 큰 이진 개체의 영구 저장소 |
200GB 또는 1TB |
|
테이블 |
구조적 데이터의 영구 저장소 |
100TB |
|
|
큐 |
프로세스간 메시지의 영구 저장소 |
100TB |
|
|
로컬 저장소 |
인스턴스당 임시 저장소 |
250GB ~ 2TB |
|
로컬 저장소는 로컬로 실행 중인 응용 프로그램에 대한 임시 저장소를 제공합니다. 로컬 저장소에는 로컬 인스턴스만 액세스할 수 있습니다. 하드웨어 오류 또는 하드웨어 유지 관리의 경우에서와 같이 인스턴스가 다른 하드웨어에서 다시 시작되는 경우에는 로컬 저장소에서 이러한 인스턴스를 허용하지 않습니다. 응용 프로그램에 안정적인 데이터 내구성이 필요하거나, 인스턴스 간에 데이터를 공유하거나 Windows Azure 외부의 데이터에 액세스하려는 경우 Windows Azure 저장소 계정이나 Windows Azure SQL 데이터베이스를 대신 사용할 수 있습니다.
SQL 데이터베이스는 서버 쪽에서 실행되는 쿼리, 트랜잭션 및 저장 프로시저를 통해 데이터 처리 기능을 제공하고, 응용 프로그램에는 결과만 반환됩니다. 응용 프로그램에서 큰 데이터 집합을 통해 데이터를 처리해야 하는 경우에는 SQL 데이터베이스를 사용하는 것이 좋습니다. 그러나 응용 프로그램에서 큰 데이터 집합을 저장하고 검색하지만 데이터를 처리할 필요가 없는 경우에는 Windows Azure 테이블 저장소를 사용하는 것이 더 좋습니다.
SQL 데이터베이스 크기 제한이 현재 150GB로 설정되어 있고 SQL 데이터베이스가 Windows Azure 저장소보다 훨씬 더 비싸므로 Blob 데이터를 Windows Azure Blob 저장소로 이동할 수 있습니다. 그러면 데이터베이스 크기 제한에 대한 압력을 줄이고 운영 비용을 줄일 수 있습니다.
자세한 내용은 Windows Azure 플랫폼의 데이터 저장소 제공을 참조하십시오.
Windows Azure SQL 데이터베이스와 SQL Server 비교
SQL Server와 마찬가지로 SQL 데이터베이스도 Transact-SQL 기반 데이터베이스 액세스를 위해 TDS(Tabular Data Stream) 인터페이스를 노출합니다. 따라서 데이터베이스 응용 프로그램에서 SQL Server를 사용할 때와 동일한 방법으로 SQL 데이터베이스를 사용할 수 있습니다.
SQL Server 관리와 달리 SQL 데이터베이스는 물리적 관리에서 논리적 관리를 추상화하므로 데이터베이스, 로그인, 사용자 및 역할은 사용자가 계속 관리하지만 하드 드라이브, 서버 및 저장소와 같은 물리적 하드웨어는 Microsoft에서 관리하고 구성합니다. Microsoft에서 모든 물리적 관리를 처리하므로 관리, 프로비저닝, Transact-SQL 지원, 프로그래밍 모델 및 기능 면에서 SQL 데이터베이스와 SQL Server 간에 약간의 차이가 있습니다.
다음 목록에서는 몇 가지 주요 차이점에 대한 높은 수준의 개요를 설명합니다.
-
데이터베이스 크기
SQL 데이터베이스는 현재 다음과 같은 두 가지 버전을 제공합니다.-
Web Edition(1GB 및 5GB)
-
Business Edition(10, 20, 30, 40, 50, 100, 150GB)
-
Web Edition(1GB 및 5GB)
-
인증
SQL 데이터베이스는 SQL 인증만 지원합니다. 응용 프로그램에서 사용되는 인증 체계를 변경해야 하는지 여부를 고려해야 합니다. 보안 제한 사항에 대한 자세한 내용은 보안 지침 및 제한 사항을 참조하십시오. -
SQL Server 데이터베이스 버전
SQL 데이터베이스는 SQL Server 2008(수준 100)을 기반으로 합니다. SQL Server 2000 또는 SQL Server 2005 데이터베이스를 SQL 데이터베이스로 마이그레이션하려면 데이터베이스가 SQL Server 2008과 호환되는지 확인해야 합니다. 최상의 경로는 SQL Server 2008에서 SQL 데이터베이스로 마이그레이션하는 것입니다. SQL 데이터베이스로 마이그레이션하기 전에 SQL Server 2008로의 내부 업그레이드를 수행할 수 있습니다. 다음은 이전 버전의 SQL Server에서 마이그레이션하는 데 도움이 되는 몇 가지 리소스입니다. SQL Server 2008 R2로 업그레이드 및 Microsoft SQL Server 2008 업그레이드 관리자. -
스키마
SQL 데이터베이스는 힙을 지원하지 않습니다. 모든 테이블에 클러스터형 인덱스가 있어야 데이터를 삽입할 수 있습니다. 클러스터형 인덱스 요구 사항에 대한 자세한 내용은 Windows Azure SQL 데이터베이스 내부를 참조하십시오. -
Transact-SQL 지원 가능성
Windows Azure SQL 데이터베이스는 Transact-SQL 언어의 하위 집합을 지원합니다. 데이터베이스를 SQL 데이터베이스에 배포하기 전에 지원되는 Transact-SQL 문만 포함하도록 스크립트를 수정해야 합니다. 자세한 내용은 지원되는 Transact-SQL 문, 부분적으로 지원되는 Transact-SQL 문 및 지원되지 않은 Transact-SQL 문을 참조하십시오. -
USE 문
SQL 데이터베이스에서 USE 문은 데이터베이스 간을 전환하지 않습니다. 데이터베이스를 변경하려면 데이터베이스에 직접 연결해야 합니다. -
가격
SQL 데이터베이스 구독 가격은 데이터베이스 수와 버전을 기반으로 산정됩니다. 또한 데이터 전송 볼륨에 대해서는 추가 비용이 발생하며, 모든 시간 데이터는 데이터 센터에서 수신하거나 전송합니다. 사용자 자신의 프레미스에서 응용 프로그램 코드를 실행하고 데이터 센터에서 SQL 데이터베이스에 연결하도록 선택하거나 SQL 데이터베이스와 동일한 데이터 센터에서 호스팅되는 Windows Azure에서 응용 프로그램 코드를 실행하도록 선택할 수 있습니다. Windows Azure에서 응용 프로그램 코드를 실행하면 추가 데이터 전송 요금이 발생하는 것을 막을 수 있습니다. 두 경우 모두, 둘 중 어느 모델로도 완화할 수 없는 인터넷 네트워크 지연 시간에 대해 알고 있어야 합니다. 자세한 내용은 가격 개요를 참조하십시오. -
기능 제한 사항
일부 SQL Server 기능은 현재 SQL 데이터베이스에서 지원되지 않습니다. 이러한 기능으로는 SQL 에이전트, 전체 텍스트 검색, Service Broker, 백업 및 복원, 공용 언어 런타임 및 SQL Server Integration Services가 있습니다. 자세한 목록은 SQL Server 기능 제한 사항을 참조하십시오.
연결 처리
SQL 데이터베이스와 같은 클라우드 기반 데이터베이스를 사용할 때는 인터넷 또는 기타 복잡한 네트워크를 통한 연결이 필요합니다. 따라서 예상치 못한 연결 끊김을 처리할 수 있도록 준비해야 합니다.
SQL 데이터베이스는 공유 리소스에 대규모의 다중 테넌트 데이터베이스 서비스를 제공합니다. 모든 SQL 데이터베이스 고객에게 좋은 환경을 제공하기 위해 다음과 같은 경우 서비스에 대한 연결이 닫힐 수 있습니다.
다음은 연결 종료의 원인 목록입니다.
-
네트워크 대기 시간
대기 시간은 데이터를 SQL 데이터베이스에 전송하는 데 걸리는 시간을 증가시킵니다. 이 문제를 완화하는 가장 좋은 방법은 여러 개의 동시 스트림을 사용하여 데이터를 전송하는 것입니다. 그러나 병렬화의 효과는 네트워크 대역폭에 의해 제한됩니다.
SQL 데이터베이스를 사용하면 여러 데이터 센터에서 데이터베이스를 만들 수 있습니다. 사용자의 위치와 네트워크 연결에 따라 사용자 위치와 각 데이터 센터 간의 네트워크 대기 시간은 달라집니다. 네트워크 대기 시간을 줄이려면 대부분의 사용자와 가장 가까이 있는 데이터 센터를 사용합니다. 네트워크 대기 시간 측정에 대한 자세한 내용은 Windows Azure SQL 데이터베이스에 대한 클라이언트 대기 시간 테스트를 참조하십시오.
Windows Azure에서 응용 프로그램 코드를 호스팅하면 응용 프로그램에서 SQL 데이터베이스에 데이터를 요청할 때 네트워크 대기 시간이 최소화되므로 응용 프로그램의 성능이 향상됩니다.
네트워크 왕복을 최소화하면 네트워크 관련 문제를 줄이는 데도 도움이 됩니다. -
데이터베이스 장애 조치(failover)
SQL 데이터베이스는 데이터 가용성 및 비즈니스 연속성을 유지하기 위해 데이터의 다중 중복 복사본을 물리적 서버에 복제합니다. 하드웨어 오류 또는 업그레이드가 발생할 경우 SQL 데이터베이스는 장애 조치(failover)를 자동으로 수행하여 응용 프로그램의 가용성을 최적화합니다. 현재 일부 장애 조치(failover) 작업을 수행하면 세션이 예기치 않게 종료될 수 있습니다. -
부하 분산
SQL 데이터베이스의 부하 분산 장치는 데이터 센터에서 물리적 서버 및 서비스의 최적 사용을 보장합니다. 시스템에 대한 CPU 사용률, I/O(입력/출력) 대기 시간 또는 작업 중인 작업자 수가 임계값을 초과하는 경우 SQL 데이터베이스는 트랜잭션을 종료하고 세션과의 연결을 끊을 수도 있습니다. -
조정
모든 구독자가 적절한 양의 리소스를 수신하고 특정 구독자가 리소스를 독점하지 않도록 하기 위해 SQL 데이터베이스는 특정 조건에서 구독자 연결을 닫거나 "조정"할 수 있습니다. SQL 데이터베이스 엔진 조정 서비스는 지속적으로 특정 성능 임계값 모니터링하여 특정 구독자가 시스템 상태에 영향을 미치는 범위에 따라 다양한 수준의 조정을 이러한 사용자에 대해 시작할 수 있습니다.
SQL 데이터베이스 엔진 조정 서비스는 다음과 같은 성능 임계값을 모니터링합니다.-
사용 중인 SQL 데이터베이스 물리적 데이터베이스에 할당된 공간의 백분율. 소프트 및 하드 한도 백분율이 동일합니다.
-
사용 중인 SQL 데이터베이스 로그 파일에 할당된 공간의 백분율. 로그 파일은 구독자 간에 공유됩니다. 소프트 및 하드 한도 백분율이 다릅니다.
-
로그 드라이브에 쓸 때의 지연 시간(밀리초). 소프트 및 하드 한도 백분율이 다릅니다.
-
로그 드라이브에 쓸 때의 지연 시간(밀리초). 소프트 및 하드 한도 백분율이 동일합니다.
-
프로세서 사용량. 소프트 및 하드 한도 백분율이 동일합니다.
-
데이터베이스 구독에 허용되는 최대 크기를 기준으로 한 개별 데이터베이스 크기. 소프트 및 하드 한도 백분율이 동일합니다.
-
데이터베이스에 대한 활성 요청을 처리하는 총 작업자 수. 소프트 및 하드 한도 백분율이 다릅니다. 이 임계값을 초과하는 경우 차단할 데이터베이스를 선택하는 기준은 다른 임계값의 경우와 다릅니다. 최대 작업자 수를 사용하는 데이터베이스는 트래픽 속도가 가장 빠른 데이터베이스 대신 후보를 조정할 가능성이 더 높습니다.
-
사용 중인 SQL 데이터베이스 물리적 데이터베이스에 할당된 공간의 백분율. 소프트 및 하드 한도 백분율이 동일합니다.
자세한 내용은 Windows Azure SQL 데이터베이스 연결 관리 및 Windows Azure SQL 데이터베이스 성능 및 탄력성 가이드를 참조하십시오.
연결 끊김을 처리하는 가장 좋은 방법은 연결을 다시 설정하고 실패한 명령 또는 쿼리를 다시 실행하는 것입니다. 자세한 내용은 일시적인 오류 처리 프레임워크를 참조하십시오.
데이터 가져오기를 위해 데이터베이스 최적화
다음은 데이터베이스의 마이그레이션 성능을 향상시키기 위해 수행할 수 있는 몇 가지 작업입니다.
-
비클러스터형 인덱스의 생성을 지연하거나 비클러스터형 인덱스를 사용하지 않도록 설정합니다. 데이터가 로드되기 전에 만들어진 추가 인덱스는 최종 데이터베이스 크기와 동일한 양의 데이터를 로드하는 데 걸리는 시간을 크게 증가시킬 수 있습니다.
-
트리거를 해제하고 검사를 제한합니다. 테이블에 행이 삽입될 때 트리거가 발생하여 다른 테이블에 행이 다시 삽입될 수 있습니다. 트리거는 지연을 발생시킬 수 있고 삽입이 두 번 발생하는 것은 사용자가 원하지 않을 수 있습니다.
-
가져올 데이터를 테이블의 클러스터형 인덱스에 따라 정렬하면 대량 가져오기 성능이 향상됩니다. 자세한 내용은 데이터 대량 가져오기 중 정렬 순서 제어를 참조하십시오.
큰 데이터를 SQL 데이터베이스에 전송
SSIS(SQL Server Integration Services) 및 BCP 유틸리티를 사용하면 큰 데이터 마이그레이션을 손쉽게 수행할 수 있습니다.
큰 데이터를 SQL 데이터베이스에 로드할 경우 데이터를 여러 개의 동시 스트림으로 분할하면 최상의 성능을 얻을 수 있습니다.
기본적으로 데이터 파일의 모든 행은 하나의 일괄 처리로 가져옵니다. 여러 개의 일괄 처리에 행을 배포하려면 일괄 처리를 사용할 수 있을 때마다 일괄 처리 크기를 지정합니다. 일괄 처리에 대한 트랜잭션이 실패하면 현재 일괄 처리에서 삽입한 내용만 롤백됩니다. 커밋된 트랜잭션으로 이미 가져온 일괄 처리는 나중에 발생한 오류의 영향을 받지 않습니다. 최적의 일괄 처리 크기를 확인하려면 해당 시나리오 및 환경에 대해 다양한 일괄 처리 크기 설정을 테스트하는 것이 좋습니다.
마이그레이션 도구 선택
데이터베이스를 SQL 데이터베이스로 마이그레이션하는 데 사용할 수 있는 도구는 여러 가지가 있습니다. 일반적으로 데이터베이스 마이그레이션에는 스키마 마이그레이션과 데이터 마이그레이션이 있는데, 둘 중 하나를 지원하는 도구와 둘 다 지원하는 도구가 있습니다. 또한 대량 복사 API를 사용하여 사용자 지정 데이터 업로드 응용 프로그램을 만들 수도 있습니다.
SQL Server에서 마이그레이션
|
도구 |
스키마 |
SQL 데이터베이스 호환성 검사 |
데이터 |
데이터 전송 효율성 |
참고 |
|
DAC 패키지 |
예 |
예 |
아니요 |
해당 없음 |
|
|
DAC BACPAC 가져오기 내보내기 |
예 |
예 |
예 |
좋음 |
|
|
SSMS 스크립트 생성 마법사 |
예 |
약간 |
예 |
나쁨 |
|
|
bcp |
아니요 |
해당 없음 |
예 |
좋음 |
|
|
SQL 데이터베이스마이그레이션 마법사 |
예 |
예 |
예 |
좋음 |
|
|
SQL Server Integration Services |
아니요 |
해당 없음 |
예 |
좋음 |
|
|
SQL Server 가져오기 및 내보내기 마법사 |
아니요 |
해당 없음 |
예 |
좋음 |
|
다른 RDMS에서 마이그레이션
SQL 데이터베이스 Migration Assistant를 사용하여 데이터베이스를 Access, MySQL, Oracle, Sybase에서 SQL 데이터베이스로 마이그레이션할 수 있습니다.
Microsoft 코드명 "Data Transfer"는 CSV 또는 Excel 파일의 데이터를 SQL 데이터베이스로 전송할 수 있습니다.
SQL 데이터베이스 간 마이그레이션
한 SQL 데이터베이스에서 다른 SQL 데이터베이스로 데이터를 마이그레이션하려면 SQL 데이터베이스 복사 및 SQL 데이터 동기화를 사용하면 됩니다.
SQL 데이터베이스는 데이터베이스 복사 기능을 지원합니다. 이 기능을 사용하면 SQL 데이터베이스에서 기존 데이터베이스를 복사하여 트랜잭션에서 일관된 새 데이터베이스를 만들 수 있습니다. 데이터베이스를 복사하려면 새 데이터베이스를 만들 SQL 데이터베이스 서버의 master 데이터베이스에 연결하고 CREATE DATABASE 명령을 사용해야 합니다.
CREATE DATABASE destination_database_name AS COPY OF [source_server_name.]source_database_name
새 데이터베이스는 동일한 서버에 배치하거나 다른 서버에 배치할 수 있습니다. 이 문을 실행하는 사용자는 대상 서버에서는 새 데이터베이스를 만들 수 있는 dbmanager 역할에 속해야 하고 원본 데이터베이스에서는 dbowner 역할에 속해야 합니다. 자세한 내용은 Windows Azure SQL 데이터베이스에서 데이터베이스 복사를 참조하십시오.
SQL 데이터베이스 데이터 동기화를 사용하면 SQL 데이터베이스와 SQL Server 또는 다른 SQL 데이터베이스 간의 정기 동기화를 만들고 예약할 수 있습니다. 자세한 내용은 SQL 데이터 동기화 개요를 참조하십시오.
마이그레이션 도구 사용
DAC(데이터 계층 응용 프로그램) 패키지
DAC(데이터 계층 응용 프로그램)는 Visual Studio 2010의 개발자 도구 지원과 함께 SQL Server 2008 R2에 처음 도입되었습니다. DAC는 다른 서버에 배포할 데이터베이스의 스키마, 코드 및 구성을 패키지하는 데 유용합니다. DAC를 배포할 준비가 되면 DAC 정의를 XML 형식으로 포함하는 압축 파일인 DAC 패키지(.bacpac)에 DAC가 빌드됩니다. SQL Server Management Studio에서 데이터베이스 스키마를 DAC 패키지로 내보낸 다음 이 패키지를 SQL 데이터베이스에 배포할 수 있습니다.
참고 |
|---|
| 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 데이터베이스 스키마를 SQL 데이터베이스로 마이그레이션하는 작업은 다음과 같은 두 개의 기본 단계로 구성되어 있습니다.
-
SQL Server 데이터베이스에서 DAC 패키지 추출:
데이터 계층 응용 프로그램 추출 마법사를 사용하여 기존 데이터베이스를 기반으로 DAC 패키지를 빌드할 수 있습니다. DAC 패키지에는 데이터베이스에서 선택한 개체 및 연결된 인스턴스 수준 개체(예: 데이터베이스 사용자에 매핑되는 로그인)가 포함됩니다.
다음은 이 마법사의 시작 화면 스크린샷입니다.
이 마법사는 다음과 같은 기본 단계로 구성되어 있습니다.-
DAC 응용 프로그램 이름, 버전, 설명 및 패키지 파일 위치를 비롯한 DAC 속성을 설정합니다.
-
모든 데이터베이스 개체가 DAC에서 지원되는지 확인합니다.
-
패키지를 빌드합니다.
-
DAC 응용 프로그램 이름, 버전, 설명 및 패키지 파일 위치를 비롯한 DAC 속성을 설정합니다.
-
SQL 데이터베이스에 DAC 패키지 배포:
데이터 계층 응용 프로그램 배포 마법사를 사용하여 DAC 패키지를 배포할 수 있습니다. 먼저 SQL Server Management Studio에서 SQL 데이터베이스 서버에 연결해야 합니다. 데이터베이스가 없으면 마법사가 데이터베이스를 만듭니다. 이 마법사는 개체 탐색기 계층에서 선택한 노드와 연결된 데이터베이스 엔진에 DAC 패키지를 배포합니다. 예를 들어 다음 스크린샷에서는 maqqarly23.database.windows.net이라는 SQL Server에 패키지를 배포합니다.
이 마법사는 다음과 같은 기본 단계로 구성되어 있습니다.
중요 특히 배포할 DAC 패키지가 사용자의 조직에서 개발되지 않은 경우, 패키지를 프로덕션 환경에 배포하기 전에 패키지의 콘텐츠를 검토하는 것이 좋습니다. 자세한 내용은 DAC 패키지의 유효성 검사를 참조하십시오. -
DAC 패키지를 선택합니다.
-
패키지 콘텐츠의 유효성을 검사합니다.
-
SQL 데이터베이스를 지정하는 데이터베이스 배포 속성을 구성합니다.
-
패키지를 배포합니다.
-
DAC 패키지를 선택합니다.
마법사를 사용하는 대신 dacstore.install() 메서드와 함께 PowerShell을 사용하여 스키마를 SQL 데이터베이스로 마이그레이션할 수 있습니다.
리소스
데이터 계층 응용 프로그램 BACPAC 패키지
DAC(데이터 계층 응용 프로그램)는 데이터 계층 개체를 개발, 배포 및 관리하는 자체 포함 단위입니다. DAC를 사용하면 데이터 계층 개발자 및 데이터베이스 관리자가 데이터베이스 개체 및 인스턴스 개체를 비롯한 Microsoft SQL Server 개체를 DAC 패키지(.dacpac 파일)라고 하는 단일 엔터티로 패키지할 수 있습니다. BACPAC 형식은 표준 .dacpac 파일 콘텐츠 외에도 메타데이터 파일 및 JSON(JavaScript Object Notation)으로 인코딩된 테이블 데이터를 포함하도록 DACPAC 형식을 확장합니다. SQL Server 데이터베이스를 .bacpac 파일로 패키지하고 이 파일을 사용하여 데이터베이스를 SQL 데이터베이스로 마이그레이션할 수 있습니다.
참고 |
|---|
| DACPAC와 BACPAC는 비슷하지만 실제로는 매우 다른 시나리오를 대상으로 합니다. DACPAC는 스키마를 캡처하고 배포하는 데 중점을 두기 때문에 주로 데이터베이스를 개발, 테스트 및 프로덕션 환경에 배포하는 데 사용됩니다. BACPAC는 스키마 및 데이터를 캡처하는 데 중점을 둡니다. BACPAC는 논리적으로 데이터베이스 백업과 동일하며 기존 데이터베이스를 업그레이드하는 데 사용할 수 없습니다. BACPAC는 주로 한 서버에서 다른 서버(또는 SQL 데이터베이스)로 데이터베이스를 이동하고 기존 데이터베이스를 개방형 형식으로 보관하는 데 사용됩니다. |
SQL 데이터베이스에 대한 가져오기 및 내보내기 서비스는 현재 공용 CTP로 사용할 수 있습니다. 이 서비스는 SQL 데이터베이스와 Windows Azure Blob 저장소 간에 BACPAC 파일을 직접 가져오거나 내보낼 수 있습니다. SQL 데이터베이스에 대한 가져오기 및 내보내기 서비스는 요청 제출에 사용할 수 있는 몇 가지 공용 REST 끝점을 제공합니다.
Windows Azure 플랫폼 관리 포털에는 SQL 데이터베이스에 대한 가져오기 및 내보내기 서비스를 호출하는 인터페이스가 있습니다.
SQL Server Management Studio는 현재 데이터베이스를 BACPAC 파일로 내보내는 것을 지원하지 않습니다. 따라서 DAC API를 사용하여 데이터를 가져오고 내보낼 수 있습니다.
SQL DAC 예에서는 데이터 계층 응용 프로그램 프레임워크 API를 사용하여 데이터베이스를 SQL Server에서 SQL 데이터베이스로 마이그레이션하는 방법을 보여 줍니다. 이 패키지는 다음과 같은 두 개의 명령줄 유틸리티와 해당 원본 코드를 제공합니다.
-
DAC 가져오기 및 내보내기 클라이언트 쪽 도구를 사용하여 bacpac 파일을 내보내고 가져올 수 있습니다.
-
DAC 가져오기 및 내보내기 서비스 클라이언트를 사용하여 SQL 데이터베이스에 대한 가져오기 및 내보내기 서비스를 호출하여 Windows Azure Blob 저장소와 SQL 데이터베이스 간에 bacpac 파일을 가져오고 내보낼 수 있습니다.
Windows Azure Blob 저장소에 bacpac 파일을 복사하는 한 가지 방법은 Microsoft 코드명 “Data Transfer”를 사용하는 것입니다. 자세한 내용은 Microsoft 코드명 Data Transfer 섹션을 참조하십시오.
참고 |
|---|
| DAC(데이터 계층 응용 프로그램) 프레임워크를 사용하여 SQL 데이터베이스에서 데이터를 가져오고 내보내는 기능은 현재 CodePlex 예로만 사용할 수 있습니다. 이 도구는 커뮤니티에서만 지원됩니다. |
설치 및 사용
이 섹션에서는 SQL DAC 예의 클라이언트 도구를 사용하여 데이터베이스를 SQL Server에서 SQL 데이터베이스로 마이그레이션하는 방법을 보여 줍니다.
SQL DAC 예는CodePlex에서 다운로드할 수 있습니다. 샘플을 실행하려면 컴퓨터에 데이터 계층 응용 프로그램 프레임워크도 설치해야 합니다.
이 도구를 사용하여 데이터베이스를 마이그레이션하기 전에 먼저 대상 SQL 데이터베이스를 만들어야 합니다. 이 도구를 사용하여 마이그레이션을 수행하는 작업은 다음과 같은 두 단계로 구성되어 있습니다.
-
SQL Server 데이터베이스 내보내기
사용자가 보안 액세스를 통합한 데이터베이스가 SQL Server 2008 R2에서 실행 중이라고 가정합니다. 이 데이터베이스는 다음 인수로 샘플 EXE를 호출하여 ".bacpac" 파일로 내보낼 수 있습니다.
DacCli.exe -s serverName -d databaseName -f C:\filePath\exportFileName.bacpac -x -e
-
패키지를 SQL 데이터베이스로 가져오기
Once exported, the export file can be imported to a SQL 데이터베이스 with the following arguments:
DacCli.exe -s serverName.database.windows.net -d databaseName -f C:\filePath\exportFileName.bacpac -i -u userName -p password
리소스
스크립트 생성 마법사
스크립트 생성 마법사를 사용하여 선택한 데이터베이스 내에서 SQL Server 데이터베이스 및/또는 관련 개체에 대한 Transact-SQL 스크립트를 만들 수 있습니다. 그런 다음 이 스크립트를 사용하여 스키마 및/또는 데이터를 SQL 데이터베이스에 전송할 수 있습니다.
설치 및 사용
스크립트 생성 마법사는 SQL Server 2008 R2와 함께 설치됩니다. 이 마법사는 SQL Server Management Studio 2008 R2에서 열 수 있습니다. 다음 스크린샷은 이 마법사를 여는 방법을 보여 줍니다.
이 마법사는 다음과 같은 기본 단계로 구성되어 있습니다.
-
내보낼 개체를 선택합니다.
-
스크립팅 옵션을 설정합니다. 스크립트를 파일, 클립보드 또는 새 쿼리 창에 저장하거나 웹 서비스에 게시할 수 있습니다.
-
고급 스크립팅 옵션을 설정합니다.
기본적으로 스크립트는 독립 실행형 SQL Server 인스턴스에 대해 생성됩니다. 구성을 변경하려면 스크립팅 옵션 설정 대화 상자에서 고급 단추를 클릭한 다음 데이터베이스 엔진 유형에 대한 스크립트 속성을 SQL 데이터베이스로 설정해야 합니다.
또한 스크립팅할 데이터 형식을 요구 사항에 따라 스키마만, 데이터만, 스키마 및 데이터 중에서 하나로 설정할 수도 있습니다.
스크립트를 만든 후 데이터베이스를 전송할 SQL 데이터베이스에 대해 스크립트를 실행하기 전에 스크립트를 수정할 수 있습니다.
리소스
bcp
bcp 유틸리티는 SQL Server 또는 SQL 데이터베이스로의 대용량 업로드 성능을 향상시키기 위해 디자인된 명령줄 유틸리티로, 마이그레이션 도구가 아닙니다. 이 유틸리티는 스키마를 추출하거나 생성하지 않습니다. 먼저 스키마 마이그레이션 도구 중 하나를 사용하여 스키마를 SQL 데이터베이스에 전송해야 합니다.
참고 |
|---|
| bcp를 사용하여 SQL 데이터베이스에 데이터를 백업 및 복원할 수 있습니다. |
참고 |
|---|
| SQL 데이터베이스 마이그레이션 마법사는 bcp를 사용합니다. |
설치 및 사용
bcp 유틸리티는 SQL Server와 함께 제공됩니다. SQL Server 2008 R2와 함께 제공되는 버전은 SQL 데이터베이스에서 완벽하게 지원됩니다.
bcp를 사용하는 작업은 다음과 같은 두 단계로 구성되어 있습니다.
-
데이터 파일로 데이터를 내보냅니다.
SQL Server 데이터베이스에서 데이터를 내보내려면 명령 프롬프트에서 다음 문을 실행하면 됩니다.
out 매개 변수는 SQL Server에서 데이터를 복사함을 나타냅니다. -n 매개 변수는 데이터의 기본 데이터베이스 데이터 형식을 사용하여 대량 복사 작업을 수행합니다. -q 매개 변수는 bcp 유틸리티와 SQL Server 인스턴스 간의 연결에서 SET QUOTED_IDENTIFIERS ON 문을 실행합니다.bcp tableName out C:\filePath\exportFileName.dat –S serverName –T –n -q
-
데이터 파일을 SQL 데이터베이스로 가져오기
SQL 데이터베이스로 데이터를 가져오려면 먼저 대상 데이터베이스에서 스키마를 만든 다음 명령 프롬프트에서 bcp 유틸리티를 실행해야 합니다.
–b 매개 변수는 가져온 데이터의 일괄 처리당 행 수를 지정합니다. 각 일괄 처리는 커밋되기 전에 전체 일괄 처리를 가져오는 별도의 트랜잭션으로 가져오고 기록합니다. 최상의 일괄 처리 크기를 찾아서 사용하면 데이터 마이그레이션 중에 SQL 데이터베이스와의 연결이 끊기는 것을 줄일 수 있습니다.Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b batchSize
다음은 bcp를 사용하여 많은 양의 데이터 전송할 때의 몇 가지 모범 사례입니다.
-
데이터 형식 변환이 필요 없도록 –N 옵션을 사용하여 기본 모드에서 데이터를 전송합니다.
-
–b 옵션을 사용하여 일괄 처리 크기를 지정합니다. 기본적으로 데이터 파일의 모든 행은 하나의 일괄 처리로 가져옵니다. 트랜잭션이 실패하면 현재 일괄 처리에서 삽입한 내용만 롤백됩니다.
-
–h “TABLOCK, ORDER(…)” 옵션을 사용합니다. –h “TABLOCK”은 대량 로드 작업이 진행되는 동안 대량 업데이트 테이블 수준 잠금이 사용되도록 지정합니다. 그렇지 않으면 행 수준 잠금이 사용됩니다. 따라서 테이블의 잠금 경합을 줄일 수 있습니다. –h “ORDER(…)” 옵션은 데이터 파일에서 데이터의 정렬 순서를 지정합니다. 가져올 데이터를 테이블의 클러스터형 인덱스에 따라 정렬하면 대량 가져오기 성능이 향상됩니다.
–F 및 –L 옵션을 사용하여 업로드할 플랫 파일의 첫 번째 및 마지막 행을 지정할 수 있습니다. 이 방법은 데이터 파일을 물리적으로 분할하지 않고도 다중 스트림을 통해 파일을 업로드하는 데 유용합니다.
리소스
SQL 데이터베이스 마이그레이션 마법사
SQL 데이터베이스 마이그레이션 마법사는 SQL Server 2005/2008 데이터베이스를 SQL 데이터베이스로 마이그레이션하는 데 도움이 되는 오픈 소스 UI 도구입니다. 이 도구는 데이터 마이그레이션 외에도 호환성 문제를 식별하고, 가능한 경우 이러한 호환성 문제를 해결하며, 확인된 모든 문제를 사용자에게 알려 줍니다.
SQL 데이터베이스 마이그레이션 마법사에는 연결 끊김을 처리하는 기본 제공 논리가 있습니다. 이 마법사는 트랜잭션을 여러 개의 더 작은 트랜잭션으로 분할하고 SQL 데이터베이스가 연결을 끊을 때까지 실행됩니다. 연결 오류가 발생하면 이 마법사는 SQL 데이터베이스와의 새 연결을 다시 설정하고 마지막으로 성공한 명령 이후에 처리를 선택합니다. 마찬가지로 bcp를 사용하여 데이터를 SQL 데이터베이스에 업로드할 때도 이 마법사는 데이터를 더 작은 섹션으로 분할하고 재시도 논리를 사용하여 연결이 닫히기 전에 성공적으로 업로드된 마지막 레코드를 확인합니다. 그러면 bcp에서 그 다음 레코드 집합으로 데이터 업로드를 다시 시작합니다.
참고 |
|---|
| SQL 데이터베이스 마이그레이션 마법사는 커뮤니티에서 빌드하고 지원하는 오픈 소스 도구입니다. |
설치 및 사용
The SQL 데이터베이스 마이그레이션 마법사는 http://sqlazuremw.codeplex.com에서 다운로드할 수 있습니다. 로컬 컴퓨터에 패키지의 압출을 풀고 SQLAzureMW.exe를 실행합니다. 다음은 이 응용 프로그램의 스크린샷입니다.
이 마법사는 다음과 같은 단계로 구성되어 있습니다.
-
마법사를 통해 수행할 프로세스를 선택합니다.
-
스크립팅할 원본을 선택합니다.
-
스크립팅할 데이터베이스 개체를 선택합니다.
-
스크립트를 생성합니다. 나중에 스크립트를 수정할 수도 있습니다.
-
대상 서버에 연결하는 데 필요한 정보를 입력합니다. 대상 SQL 데이터베이스를 만들 수도 있습니다.
-
대상 서버에 대해 스크립트를 실행합니다.
리소스
SQL Server Integration Services
SSIS(SQL Server Integration Services)를 사용하여 다양한 데이터 마이그레이션 작업을 수행할 수 있습니다. 이 도구는 유형이 다른 여러 데이터 원본 및 대상을 처리할 때 유용합니다. 이 도구는 원본과 대상 간의 복잡한 워크플로 및 데이터 변환에 대한 지원을 제공합니다. SSIS가 현재 SQL 데이터베이스에서 지원되지 않더라도 내부 SQL Server 2008 R2에서 SSIS를 실행하여 데이터를 Windows Azure SQL 데이터베이스로 전송할 수 있습니다.
SSIS 가져오기/내보내기 마법사를 사용하면 단일 데이터 원본의 데이터를 변환하지 않고도 대상으로 이동하는 패키지를 만들 수 있습니다. 이 마법사는 텍스트 파일과 기타 SQL Server 인스턴스를 비롯한 데이터를 다양한 원본 유형에서 다양한 대상 유형으로 신속하게 이동할 수 있습니다.
설치 및 사용
SSIS의 SQL Server 2008 R2 버전을 사용하여 SQL 데이터베이스에 연결해야 합니다.
ADO.NET 어댑터에는 SQL 데이터베이스에 대한 필수 지원이 포함되어 있습니다. 이 어댑터는 SQL 데이터베이스를 위해 특별히 대량 로드 데이터에 대한 옵션을 제공합니다. ADO.NET 대상 어댑터를 사용하여 데이터를 SQL 데이터베이스에 전송할 수 있습니다. OLEDB를 사용하여 Windows Azure SQL 데이터베이스에 연결하는 작업은 지원되지 않습니다.
다음은 SQL 데이터베이스에 대한 ADO.NET 연결을 구성하는 화면의 스크린샷입니다.
조정 또는 네트워크 문제로 인해 패키지가 실패할 수 있으므로 패키지가 실패할 경우 패키지를 다시 시작하는 것이 아니라 실패 지점에서 패키지가 재개되도록 패키지를 디자인할 수 있습니다.
ADO.NET 대상을 구성할 때는 “가능할 경우 대량 삽입 사용” 옵션을 사용해야 합니다. 그러면 대량 로드 기능을 사용하여 전송 성능을 향상시킬 수 있습니다.
성능을 향상시키는 한 가지 방법은 파일 시스템에서 원본 데이터를 여러 개의 파일로 분할하는 것입니다. SSIS 디자이너에서 플랫 파일 구성 요소를 사용하여 파일을 참조할 수 있습니다. 그러면 가능할 경우 대량 삽입 사용 플래그가 선택된 ADO.Net 구성 요소에 각 입력 파일이 연결됩니다.
리소스
SQL Server 가져오기 및 내보내기 마법사
SQL Server 가져오기 및 내보내기 마법사는 간단한 가져오기 또는 내보내기를 위한 SQL Server Integration Services 패키지를 만들 수 있는 가장 간단한 방법을 제공합니다. 이 마법사는 연결, 원본 및 대상을 구성하고 가져오기 또는 내보내기를 즉시 실행하는 데 필요한 데이터 변환을 추가합니다. 패키지를 만든 후 SSIS 디자이너에서 패키지를 수정할 수 있습니다.
이 마법사는 다음과 같은 데이터 원본을 지원합니다.
-
.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 패키지 중 하나를 사용하여 스키마를 전송해야 합니다.
참고 |
|---|
| 64비트 컴퓨터에서는 Integration Services가 64비트 버전의 SQL Server 가져오기 및 내보내기 마법사(DTSWizard.exe)를 설치합니다. 그러나 Access 또는 Excel 등의 일부 데이터 원본은 32비트 공급자만 제공합니다. 이러한 데이터 원본을 사용하려면 32비트 버전의 마법사를 설치하여 실행해야 합니다. 이 마법사의 32비트 버전을 설치하려면 설치 도중 클라이언트 도구 또는 Business Intelligence Development Studio를 선택합니다. |
설치 및 사용
SQL Server 2008 R2 이상에서는 SQL Server 가져오기 및 내보내기 마법사가 SQL 데이터베이스에 대해 지원됩니다. 다음과 같은 여러 가지 방법으로 이 마법사를 시작할 수 있습니다.
-
시작 메뉴에서 모든 프로그램, Microsoft SQL Server 2008을 차례로 가리킨 다음 데이터 가져오기 및 내보내기를 클릭합니다.
-
Business Intelligence Development Studio의 솔루션 탐색기에서 SSIS 패키지 폴더를 마우스 오른쪽 단추로 클릭한 다음 SSIS 가져오기 및 내보내기 마법사를 클릭합니다.
-
Business Intelligence Development Studio의 프로젝트 메뉴에서 SSIS 가져오기 및 내보내기 마법사를 클릭합니다.
-
SQL Server Management Studio에서 데이터베이스 엔진 서버 유형에 연결하고, 데이터베이스를 확장하고, 데이터베이스를 마우스 오른쪽 단추로 클릭하고, 작업을 가리킨 다음 데이터 가져오기 또는 데이터 내보내기를 클릭합니다.
-
명령 프롬프트 창에서 C:\Program Files\Microsoft SQL Server\100\DTS\Binn에 있는 DTSWizard.exe를 실행합니다.
마이그레이션은 다음과 같은 기본 단계로 구성되어 있습니다.
-
데이터를 복사할 데이터 원본을 선택합니다.
-
데이터를 복사해 넣을 대상을 선택합니다.
데이터를 SQL 데이터베이스로 내보내려면 .NET Framework Data Provider for SQL Server를 대상으로 선택해야 합니다.
-
테이블 복사 또는 쿼리를 지정합니다.
-
원본 개체를 선택합니다.
-
패키지를 저장하고 실행합니다.
SQL Server 가져오기 및 내보내기 마법사가 패키지를 만든 후에는 선택적으로 패키지를 나중에 다시 실행하기 위해 저장하거나 SQL Server BI(Business Intelligence) Development Studio에서 패키지를 구체화하고 향상시킬 수 있습니다.
참고 |
|---|
| 패키지를 저장하는 경우에는 기존 Integration Services 프로젝트에 패키지를 추가해야 패키지를 변경하거나 BI Development Studio에서 패키지를 실행할 수 있습니다. |
리소스
Microsoft 코드명 “Database Transfer”
Microsoft 코드명 “Data Transfer”는 컴퓨터에서 SQL 데이터베이스 또는 Windows Azure Blob 저장소로 데이터를 전송할 수 있는 클라우드 서비스입니다. Windows Azure Blob 저장소에는 모든 데이터 형식을 업로드할 수 있고 SQL 데이터베이스에는 CSV(쉼표로 구분된 값) 또는 Microsoft Excel 형식(.xlsx)으로 저장된 데이터를 업로드할 수 있습니다. SQL 데이터베이스에 데이터를 업로드하면 데이터가 데이터베이스 테이블로 변환됩니다.
사용법
데이터 전송 서비스는 https://web.datatransfer.azure.com/에서 액세스할 수 있습니다. 이 홈 페이지에는 데이터 가져오기 옵션과 데이터 집합 및 저장소 관리 옵션이 있습니다.
SQL 데이터베이스로 데이터 가져오기 프로세스는 다음과 같은 단계로 구성되어 있습니다.
-
SQL 데이터베이스 자격 증명을 입력합니다.
-
전송할 파일을 선택합니다.
-
데이터 파일을 분석한 다음 데이터를 전송합니다.
리소스
SQL Server 마이그레이션 길잡이
SSMA(SQL Server Migration Assistant)는 Oracle, Sybase, MySQL 및 Microsoft Access 데이터베이스를 SQL 데이터베이스 또는 SQL Server로 마이그레이션할 때 발생하는 비용과 위험을 줄여주는 제품군입니다. SSMA는 마이그레이션 테스트뿐만 아니라 마이그레이션 평가 분석, 스키마 및 SQL 문 변환, 데이터 마이그레이션을 비롯한 마이그레이션의 모든 측면을 자동화합니다.
설치 및 사용
SSMA는 웹 다운로드입니다. 최신 버전을 다운로드하려면 SQL Server 마이그레이션 도구 제품 페이지를 참조하십시오. 이 문서의 작성일 기준 최신 버전은 다음과 같습니다.
-
Microsoft SQL Server Migration Assistant for Access v5.1
-
Microsoft SQL Server Migration Assistant for MySQL v5.1
-
Microsoft SQL Server Migration Assistant for Oracle v5.1
-
Microsoft SQL Server Migration Assistant for Sybase v5.1
-
Microsoft SQL Server Migration Assistant 2008 for Sybase PowerBuilder Applications v1.0
SSMS는 Windows Installer 기반 마법사를 사용하여 설치됩니다. SSMA는 무료이지만 등록 키를 다운로드해야 합니다. SSMA를 설치하고 실행하면 해당 SSMA를 등록하고 등록 키를 다운로드하라는 메시지가 표시됩니다.
Access용 SSMA의 마이그레이션 프로세스는 다음과 같은 단계로 구성되어 있습니다.
-
새 마이그레이션 마법사를 만듭니다. 마이그레이션 대상 상자에서 SQL 데이터베이스를 선택합니다.
-
Access 데이터베이스를 추가합니다.
-
마이그레이션할 Access 개체를 선택합니다.
-
SQL 데이터베이스에 연결합니다.
-
테이블을 링크합니다. SQL 데이터베이스에서 기존 Access 응용 프로그램을 사용하려면 원래 Access 테이블을 마이그레이션된 SQL 데이터베이스 테이블에 링크하면 됩니다. 테이블을 링크하면 쿼리, 폼, 보고서 및 데이터 액세스 페이지에서 Access 데이터베이스의 데이터 대신 SQL 데이터베이스의 데이터를 사용하도록 Access 데이터베이스가 수정됩니다.
-
선택한 개체를 변환합니다.
-
변환된 개체를 SQL 데이터베이스에 로드합니다.
-
선택한 Access 개체에 대한 데이터를 마이그레이션합니다.
리소스
참고 항목
빌드 날짜:
참고