DAC 패키지 압축 풀기

DAC는 전체 데이터베이스 모델의 자체 포함 단위이며 DAC 패키지 또는 .dacpac라는 아티팩트에서 이식 가능합니다. 이 문서에서는 Windows, macOS 및 Linux용 .dacpac에서 데이터베이스 모델의 압축을 푸는 여러 가지 방법을 설명합니다.

경고

출처를 알 수 없거나 신뢰할 수 없는 DAC 패키지는 배포하지 않는 것이 좋습니다. 이러한 DAC에 포함된 악성 코드가 의도하지 않은 코드를 실행하거나 스키마를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 원본에서 DAC를 사용하기 전에 데이터베이스 엔진의 격리된 테스트 인스턴스에 배포하고 DAC의 압축을 풀고 저장 프로시저 또는 기타 사용자 정의 코드와 같은 코드를 검사합니다.

dacpac의 콘텐츠를 검사하는 옵션은 다음과 같습니다.

  • Visual Studio에서 .dacpac를 SQL 프로젝트로 가져오기
  • XML 콘텐츠를 보려면 파일 압축을 풉니다.
  • 테스트 인스턴스에 .dacpac 배포
  • Unpack() Microsoft.SqlServer.DacFx .NET API에서 메서드 호출

Visual Studio에서 SQL 프로젝트로 .dacpac 가져오기

Visual Studio에서 .dacpac를 SQL 프로젝트로 가져오면 .dacpac의 내용이 .sql 파일로 변환되고 폴더로 구성됩니다. 가져오기에 따라 .dacpac의 배포 후 스크립트 및 배포 전 스크립트가 솔루션 탐색기에 표시됩니다.

  1. Visual Studio의 일부로 SQL Server Data Tools를 설치하고 새 SQL 프로젝트를 만듭니다.

  2. 솔루션 탐색기에서 빈 프로젝트를 마우스 오른쪽 단추로 클릭하고 가져오기를 선택한 다음 데이터 계층 애플리케이션 패키지에서 선택합니다.

.dacpac 압축을 해제하여 XML 내용 보기

.dacpac 파일을 압축 해제하면 텍스트 편집기에서 볼 수 있는 원시 XML 콘텐츠가 생성됩니다. .dacpac 내에서 특정 구성 요소를 찾는 경우 콘텐츠에 액세스하는 빠른 방법이 될 수 있습니다.

  1. .dacpac 파일의 파일 .zip확장자를 .로 변경합니다.

  2. OS에서 제공하는 유틸리티를 사용하여 .zip 파일의 압축을 풉 명령줄에서 파일의 압축을 풀려면 다음을 수행합니다.

    unzip AdventureWorks.dacpac
    
  3. 결과 내용에는 < a0/Origin.xml> 및 model.xml.가 포함DacMetadata.xml됩니다.

테스트 인스턴스에 .dacpac 배포

.dacpac을 테스트 인스턴스에 배포하면 .dacpac의 내용이 데이터베이스에 게시됩니다. 이 경우 연결된 다양한 데이터베이스 도구에서 개체를 검색할 수 있습니다.

참고 항목

테스트 인스턴스를 로컬 로 만드는 한 가지 옵션은 Docker의 SQL Server를 사용하는 것입니다.

Azure Data Studio를 사용하여 .dacpac 배포

  1. Azure Data Studio에서 SQL Server dacpac 확장을 설치합니다.

  2. 원하는 인스턴스에 연결합니다. 서버 노드를 마우스 오른쪽 단추로 클릭하고 메뉴에서 데이터 계층 애플리케이션 마법사를 선택합니다.

  3. 마법사에서 배포 옵션을 선택하고 대상 데이터베이스 옵션을 새 데이터베이스설정합니다.

  4. 배포 후 개체 탐색기에서 연결된 서버의 데이터베이스로 이동하여 데이터베이스 개체를 찾습니다.

SqlPackage를 사용하여 .dacpac 배포

  1. SqlPackage를 설치 합니다.

  2. SqlPackage CLI를 사용하여 .dacpac 파일을 원하는 인스턴스에 게시합니다. 데이터베이스에 .dacpac을 게시하는 예제 명령은 SqlPackage 게시 예제를 참조하세요.

.dacpac 배포 기능이 있는 추가 도구

Azure Data Studio 및 SqlPackage 외에도 데이터베이스에 .dacpac를 배포하는 데 다른 많은 도구를 사용할 수 있습니다. 예는 다음과 같습니다.

  • SQL Server Management Studio
  • Visual Studio: SQL Server Data Tools
  • [PowerShell

Unpack() 메서드 호출

Microsoft.SqlServer.DacFx .NET API는 .dacpac를 폴더에 압축을 푸는 방법을 제공하며, 이 메서드를 사용하여 .dacpac의 압축을 프로그래밍 방식으로 폴더로 압축 해제할 수 있습니다. 아래의 .NET 애플리케이션 예제에서는 .dacpac 파일의 경로와 출력 폴더의 경로라는 두 개의 인수를 사용하며, 그 결과 .dacpac의 내용이 3개의 XML 파일로 압축을 풀고 모든 데이터베이스 개체가 포함된 단일 .sql 파일이 생성됩니다.

using Microsoft.SqlServer.Dac;

namespace DacUnpack
{
    class Program
    {
        static void Main(string[] args)
        {
            var dacpacPath = args[0];
            var outputPath = args[1];

            if (!Directory.Exists(outputPath))
            {
                Directory.CreateDirectory(outputPath);
            }

            Console.WriteLine("Unpacking {0} to {1}", dacpacPath, outputPath);
            using(DacPackage dacpac = DacPackage.Load(dacpacPath))
            {
                dacpac.Unpack(outputPath);
            }
        }
    }
}

참고 항목