다음을 통해 공유


Microsoft Fabric의 SQL Database용 SqlPackage

적용 대상:Microsoft Fabric의 SQL 데이터베이스

이 자습서에서는 Fabric의 SQL 데이터베이스에서 SqlPackage를 사용하는 방법을 알아봅니다.

SqlPackage는 데이터베이스 이식성데이터베이스 배포를 제공하는 CLI입니다.

  • Azure 또는 Fabric에서 관리되는 데이터베이스의 이식성(가져오기/내보내기)을 통해 나중에 마이그레이션하려는 경우 데이터를 다른 플랫폼으로 이식할 수 있습니다.
    • 이식성에는 자체 포함된 데이터베이스 복사본(.bacpac 또는 .dacpac 파일)을 통해 SQL Server, Azure SQL Database, Azure SQL Managed Instance 및 패브릭 내의 SQL 데이터베이스 간에 이동할 수 있는 기능이 포함됩니다.

SqlPackage를 사용하면 데이터베이스 개체에 대한 증분 변경 내용(테이블의 새 열, 기존 저장 프로시저 변경 등)을 쉽게 데이터베이스에 배포할 수 있습니다.

  • SqlPackage는 .dacpac 데이터베이스의 개체 정의가 포함된 파일을 추출하고 새 데이터베이스 또는 기존 데이터베이스에 해당 개체 상태를 적용하는 파일을 게시 .dacpac 할 수 있습니다.
  • 또한 게시 작업은 SQL 프로젝트와 통합되어 SQL 데이터베이스에 대한 오프라인 및 보다 동적 개발 주기를 가능하게 합니다.

필수 조건

  • 기존의 Fabric 용량이 필요합니다. 그렇지 않은 경우 Fabric 평가판을 시작합니다.
  • 새 작업 영역을 만들거나 기존 패브릭 작업 영역을 사용합니다.
  • Fabric에서 기존 SQL 데이터베이스를 만들거나 사용합니다. 아직 없는 경우 Fabric에서 새 SQL 데이터베이스를 만듭니다.
  • .NET 8 SDK설치합니다.

설정

SqlPackage는 Windows, macOS 및 Linux에서 dotnet 도구로 사용할 수 있습니다. 다음 명령을 사용하여 설치할 수 있습니다.

dotnet tool install --global Microsoft.SqlPackage

전역 dotnet 도구인 SqlPackage는 모든 폴더와 마찬가지로 sqlpackage 터미널에서 사용할 수 있습니다.

SqlPackage를 사용하여 데이터베이스 가져오기

A .bacpac 는 일부 마이그레이션 및 테스트 시나리오에 유용한 데이터베이스의 이식 가능한 복사본입니다. SqlPackage.bacpac 를 사용하여 빈 SQL 데이터베이스로 가져올 수 있습니다.

참고 항목

A .bacpac 는 백업 또는 백업/복원 기능을 대체하는 것이 아닙니다. Fabric의 SQL 데이터베이스 백업에 대한 자세한 내용은 Microsoft Fabric의 SQL 데이터베이스에서 자동 백업 을 참조하고 Microsoft Fabric의 SQL 데이터베이스 백업에서 복원을 참조하세요.

  1. Azure 또는 SQL Server 환경에서 사용하는 .bacpac 경우 패브릭 T-SQL 노출 영역의 SQL 데이터베이스를 충족하도록 원본 데이터베이스를 변경해야 할 수 있습니다. SqlPackage 속성이 지원되지 않는 일부 개체를 건너뛸 수 있도록 하는 대체 방법에 대해서는 추출 및 게시 이동성을 참조하세요.

  2. 패브릭 인터페이스를 통해 평소와 같이 패브릭 에서 새 SQL 데이터베이스를 만듭니다.

  3. 설정에서 연결 문자열 복사합니다.

    SQL 데이터베이스의 연결 문자열 페이지를 보여 주는 패브릭 포털의 스크린샷

  4. sqlpackage 폴더의 터미널에서 가져오기 명령을 사용합니다. 소유자 <servername><database_name>을 입력합니다.

    sqlpackage /action:import /sourcefile:"C:\DatabaseName.bacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"
    
    • SQL 데이터베이스 설정 대화 상자에서 연결 문자열 바꿉니다.
    • sourcefile 값을 .bacpac 이름(DatabaseName)과 location 로컬 컴퓨터로 바꿉니다.
  5. Microsoft Fabric의 Data Factory에서 복사 작업 으로 가져오기를 따릅니다. 시작하려면 빠른 시작: 복사 작업 만들기를 참조하세요.

SqlPackage를 사용하여 데이터베이스 내보내기

내보내 .bacpac 기는 이전 예제와 targetfile 같이 SQL 데이터베이스 설정 대화 상자에서 찾을 수 있는 .bacpac 역방향 작업입니다sourceconnectionstring. 소유자 <servername><database_name>을 입력합니다. 예시:

sqlpackage /action:export /targetfile:"C:\DatabaseName.bacpac" /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"

내보내 기에 대한 자세한 내용은 SqlPackage 내보내기 참조

추출 및 게시

SQL Database 프로젝트에서 스키마 변경 내용을 이동할 수 있는 방법의 다이어그램

A .dacpac 는 원본 데이터베이스의 테이블, 저장 프로시저 및 기타 개체에 대한 정의를 포함하는 데이터베이스 스키마 모델 파일입니다. 이 파일은 SqlPackage를 사용하는 기존 데이터베이스 또는 SQL 데이터베이스 프로젝트에서 만들 수 있습니다.

SqlPackage는 새(빈) 데이터베이스에 배포 .dacpac 하거나 원하는 .dacpac 상태와 일치하도록 기존 데이터베이스를 증분 방식으로 업데이트할 수 있습니다.

  • 추출 은 기존 데이터베이스에서 a .dacpac 또는 sql 파일을 만듭니다.
  • 게시 는 데이터베이스에 .dacpac 배포합니다.

SqlPackage 게시추출 구문은 import/export 명령과 유사합니다.

경고

SqlPackage를 사용하여 SQL 프로젝트 또는 .dacpac Fabric의 SQL 데이터베이스에 배포하는 것이 좋습니다. Visual Studio에서 .dacpac 배포하는 데 실패할 수 있습니다.

Azure SQL Database, SQL Server 또는 Fabric의 SQL 데이터베이스 이외의 플랫폼을 대상으로 하는 SQL 프로젝트에서 만든 .dacpac 배포하려면 속성 /p:AllowIncompatiblePlatform=true SqlPackage 게시 명령에 추가합니다.

이식성 데이터 추출 및 공개

SqlPackage 가져오기/내보내기 명령은 .bacpac 형식을 통한 데이터 이식성에 중점을 두지만, 추출 및 게시 명령은 .dacpac 형식을 사용하여 데이터 이식성을 구현할 수 있습니다. 추출 및 게시 속성을 사용하여 추출 및 게시 작업의 동작을 제어하고 플랫폼 간 변환에 더 많은 유연성을 제공할 수 있습니다.

추출.dacpac 하고 데이터를 포함하려면, /p:ExtractAllTableData=true 속성을 사용하세요. 추출 작업은 원본 데이터베이스의 스키마와 데이터를 모두 포함하는 값을 만듭니다 .dacpac . 이 속성 /p:ExtractReferencedServerScopedElements=false 은 패브릭의 SQL 데이터베이스에서 지원되지 않는 서버 범위 요소를 제외합니다. 다음 명령은 Fabric의 기존 SQL 데이터베이스에서 데이터를 포함한 .dacpac를 추출합니다.

sqlpackage /action:extract /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /targetfile:"C:\extracted.dacpac" /p:ExtractAllTableData=true  /p:ExtractReferencedServerScopedElements=false

데이터로 추출된 속성을 게시.dacpac 하려면 추가 속성이 필요하지 않습니다. 그러나 여러 속성을 사용하여 게시 작업의 동작을 제어할 수 있습니다.

  • /p:AllowIncompatiblePlatform=true에서는 다른 플랫폼(예: Azure SQL Database, SQL Server)에서 추출된 .dacpac의 배포가 가능합니다.
  • /p:ExcludeObjectTypes=Logins;Users 는 Fabric에서 SQL 데이터베이스에 게시할 때 호환성 문제가 발생할 수 있는 개체 형식을 제외합니다. 제외할 수 있는 개체 형식의 전체 목록은 SqlPackage 게시를 참조하세요.

SqlPackage 가져오기 명령과 마찬가지로 Fabric에서 SQL 데이터베이스에 게시 .dacpac 하기 전에 Fabric에서 데이터베이스를 만들어야 합니다. 패브릭 포털 또는 다른 패브릭 인터페이스를 통해 데이터베이스를 만들 수 있습니다. 다음 명령은 Fabric의 빈 SQL 데이터베이스에 추출된 .dacpac 항목을 게시합니다.

sqlpackage /action:publish /sourcefile:"C:\extracted.dacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /p:AllowIncompatiblePlatform=true /p:ExcludeObjectTypes=Logins;Users