다음을 통해 공유


Microsoft Fabric SQL 데이터베이스 원본 제어 통합

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

이 자습서에서는 Fabric git 통합 소스 제어를 사용하여 Fabric에서 SQL 데이터베이스를 사용하는 방법을 알아봅니다.

Microsoft Fabric의 SQL 데이터베이스에는 소스 제어 통합 또는 "git 통합"이 있으므로 사용자는 시간이 지남에 따라 데이터베이스 개체의 정의를 추적할 수 있습니다. 이 통합을 통해 팀은 다음을 수행할 수 있습니다.

  • 구성된 소스 제어 리포지토리(예: Azure DevOps)에서 라이브 데이터베이스를 코드로 자동으로 변환하는 소스 제어에 데이터베이스를 커밋합니다.
  • 데이터베이스에 차등 변경 내용을 적용하기 전에 소스 제어 리포지토리의 코드 유효성을 검사하는 소스 제어 콘텐츠에서 데이터베이스 개체를 업데이트합니다.

라이브 데이터베이스와 소스 제어 간의 간단한 커밋 및 업데이트 주기 다이어그램

git에 익숙하지 않은 경우 몇 가지 권장 리소스는 다음과 같습니다.

이 문서에서는 패브릭에서 SQL 데이터베이스를 사용하여 개발 프로세스를 관리하기 위해 개별적으로 또는 함께 사용할 수 있는 일련의 유용한 시나리오를 제공합니다.

이 문서의 시나리오는 데이터 노출의 에피소드에서 다룹니다. 패브릭의 소스 제어 통합에 대한 개요는 비디오를 시청하세요.

참고

데이터 정렬 및 호환성 수준과 같은 데이터베이스 수준 설정은 현재 소스 제어 및 배포 파이프라인 통합에 포함되지 않습니다. 데이터베이스를 만든 후 T-SQL을 사용하여 설정할 수 있는 데이터베이스 설정의 경우 배포 후 스크립트를 사용하여 데이터베이스를 수정할 수 있습니다.

필수 조건

설정

이 리포지토리 연결은 리포지토리의 단일 분기가 해당 작업 영역과 연결되도록 작업 영역 수준에서 적용됩니다. 리포지토리에는 여러 분기가 있을 수 있지만 작업 영역 설정에서 선택한 분기의 코드만 작업 영역에 직접적인 영향을 줍니다.

작업 영역을 소스 제어 리포지토리에 연결하는 단계는 Git 통합 시작을 참조하세요. 작업 영역을 Azure DevOps 또는 GitHub 원격 리포지토리에 연결할 수 있습니다.

원본 제어에 패브릭 SQL 데이터베이스 추가

이 시나리오에서는 데이터베이스 개체를 소스 제어에 커밋합니다. 테스트 데이터베이스에서 직접 개체를 만들고 애플리케이션 코드와 마찬가지로 소스 제어에서 해당 데이터베이스를 추적하는 애플리케이션을 개발할 수 있습니다. 결과적으로 데이터베이스 개체 정의의 기록에 액세스할 수 있으며 분기 및 병합과 같은 Git 개념을 사용하여 개발 프로세스를 사용자 지정할 수 있습니다.

  1. 패브릭 SQL 편집기SQL Server Management StudioVisual Studio Code 또는 기타 외부 도구용 MSSQL 확장에 연결합니다.
  2. 데이터베이스에 새 테이블, 저장 프로시저 또는 기타 개체를 만듭니다.
  3. 소스 제어 단추를 선택하여 소스 제어판을 엽니다.
  4. 원하는 데이터베이스 옆의 확인란을 선택합니다. 커밋을 선택합니다. Fabric 서비스는 데이터베이스에서 개체 정의를 읽고 원격 리포지토리 씁니다.
  5. 이제 코드 리포지토리 원본 뷰에서 데이터베이스 개체의 기록을수 있습니다.

기존 개체 편집을 포함하여 데이터베이스를 계속 편집할 때 이전 단계에 따라 해당 변경 내용을 소스 제어에 커밋합니다.

SQL 프로젝트 파일

소스 제어 리포지토리의 SQL 프로젝트 파일에는 데이터베이스에 대한 메타데이터가 포함되어 있습니다. 패브릭 소스 제어 통합은 이 파일을 사용하여 소스 제어 및 배포 파이프라인에 더 많은 기능을 제공합니다. 패브릭 소스 제어 통합은 프로젝트 파일을 자동으로 생성하고 업데이트합니다. 프로젝트 파일에 대한 편집은 Fabric의 다음 커밋에서 패브릭 소스 제어 통합에 의해 덮어쓰여지므로 프로젝트 파일에 대한 수동 편집을 피합니다. 그러나 SQL Server Management Studio 또는 Visual Studio Code용 SQL 프로젝트 확장과 같은 SQL 도구를 사용하여 SQL 프로젝트를 로컬로 빌드하려는 경우 프로젝트 파일의 master.dacpac 파일에 대한 참조를 추가할 수 있습니다.

SQL 프로젝트와 패브릭 통합은 프로젝트 파일에 다음 메타데이터 속성을 추가합니다.

시스템 개체 참조 기능은 작업 없이 자동으로 설정됩니다. 패브릭 쿼리 편집기에서는 공유 쿼리 폴더 아래에 배포 전 및 배포 후 스크립트를 제공합니다.

소스 제어에서 Fabric SQL 데이터베이스 업데이트

이 시나리오에서는 Visual Studio Code의 SQL 프로젝트 확장에서 데이터베이스 개체를 코드로 만든 다음 소스 제어 통합에서 Fabric SQL 데이터베이스를 업데이트하기 전에 파일을 소스 제어에 커밋합니다. 이 시나리오는 Visual Studio Code에서 작업하거나 SQL 프로젝트를 사용하는 기존 애플리케이션이 있거나 고급 CI/CD 파이프라인 요구 사항이 있는 개발자를 대상으로 합니다.

  1. Visual Studio Code의 최신 릴리스와 Visual Studio Code용 MSSQL 및 SQL 프로젝트 확장을 설치해야 합니다.
  2. 작업 영역에서 새 SQL 데이터베이스 를 만들고 개체를 추가하지 않고 소스 제어에 커밋합니다. 이 단계에서는 빈 SQL 프로젝트 및 SQL 데이터베이스 항목 메타데이터를 리포지토리에 추가합니다.
  3. 로컬 컴퓨터에 소스 제어 리포지토리를 복제합니다.
    • Azure DevOps 사용하는 경우 소스 제어 프로젝트의 ... 상황에 맞는 메뉴를 선택합니다. Clone을 선택하여 Azure DevOps 리포지토리를 로컬 컴퓨터에 복사합니다. Azure DevOps를 처음 사용하는 경우 Azure DevOps의 git으로 코드 작성 가이드를 참조하세요.
    • GitHub 사용하는 경우 리포지토리에서 Code 단추를 선택하고 URL을 복사하여 리포지토리를 로컬 컴퓨터에 복제합니다. GitHub에 익숙하지 않은 경우, 리포지토리 복제 가이드를 참조하세요.
  4. 복제된 폴더를 Visual Studio Code에서 엽니다. 작업 영역과 연결된 분기가 기본값이 아닐 수 있습니다. 분기를 전환한 후 Visual Studio Code에 이름이 지정된 <yourdatabase>.SQLDatabase 폴더가 표시됩니다.
  5. 데이터베이스의 .sql 폴더 구조 내에서 데이터베이스에 만들려는 하나 이상의 테이블에 대한 파일을 만듭니다. 파일에는 테이블에 대한 CREATE TABLE 문이 포함되어야 합니다. 예를 들어 다음 콘텐츠를 사용하여 폴더 MyTable.sql 에 이름이 지정된 dbo/Tables 파일을 만듭니다.
    CREATE TABLE dbo.MyTable
    (
        Id INT PRIMARY KEY,
        ExampleColumn NVARCHAR(50)
    );
    
  6. 구문이 유효한지 확인하려면 SQL 프로젝트를 사용하여 데이터베이스 모델의 유효성을 검사합니다. 파일을 추가한 후 Visual Studio Code의 데이터베이스 프로젝트 보기를 사용하여 프로젝트를 빌드 합니다.
  7. 빌드에 성공하면 Visual Studio Code의 소스 제어 뷰 또는 기본 로컬 git 인터페이스를 사용하여 파일을 소스 제어에 커밋 합니다.
  8. 커밋을 원격 리포지토리 푸시/동기화합니다. 새 파일이 Azure DevOps 또는 GitHub에 표시되는지 확인합니다.
  9. 패브릭 웹 인터페이스로 돌아가서 작업 영역에서 소스 제어판을 엽니다. "git에서 보류 중인 변경 내용이 있습니다"라는 경고가 이미 있을 수 있습니다. 업데이트(모두 업데이트) 단추를 선택하여 SQL 프로젝트의 코드를 데이터베이스에 적용합니다.
    • 업데이트 후 데이터베이스가 "커밋되지 않음"으로 즉시 표시될 수 있습니다. 이 상태는 Git 통합 기능이 항목 정의에 대해 생성된 모든 파일 콘텐츠를 직접 비교하고 일부 의도하지 않은 차이점이 가능하기 때문에 발생합니다. 한 가지 예는 열의 인라인 속성입니다. 이러한 경우 패브릭 웹 인터페이스의 소스 제어로 다시 커밋하여 커밋 작업의 일부로 생성된 정의와 동기화해야 합니다.
  10. 업데이트가 완료되면 선택한 도구를 사용하여 데이터베이스에 연결합니다. SQL 프로젝트에 추가한 개체가 데이터베이스에 표시됩니다.

참고

로컬 SQL 프로젝트를 변경하는 경우 구문 오류가 발생하거나 Fabric에서 지원되지 않는 기능을 사용하는 경우 데이터베이스 업데이트가 실패합니다. 계속하려면 먼저 소스 제어의 변경 사항을 수동으로 되돌려야 합니다.

원본 제어에서 패브릭의 SQL 데이터베이스를 업데이트하는 경우 SQL 프로젝트 빌드와 SqlPackage 게시 작업이 결합됩니다. SQL 프로젝트 빌드는 SQL 파일의 구문의 유효성을 검사하고 .dacpac 파일을 생성합니다. SqlPackage 게시 작업은 파일과 일치 .dacpac 하도록 데이터베이스를 업데이트하는 데 필요한 변경 내용을 결정합니다. 패브릭 인터페이스의 간소화된 특성으로 인해 SqlPackage 게시 작업에 다음 옵션이 적용됩니다.

  • /p:ScriptDatabaseOptions = false
  • /p:DoNotAlterReplicatedObjects = false
  • /p:IncludeTransactionalScripts = true
  • /p:GenerateSmartDefaults = true

Visual Studio Code, SQL Server Management Studio 또는 기타 SQL 프로젝트 도구에서 편집하기 위해 원본 제어 SQL 프로젝트를 로컬 컴퓨터에 복제할 수도 있습니다. SQL 프로젝트를 로컬로 빌드하여 변경 내용을 소스 제어에 커밋하기 전에 유효성을 검사합니다.

브랜치 작업 공간 생성

이 시나리오에서는 패브릭이 소스 제어 정의에 따라 중복된 리소스 집합을 만들게 하여 Fabric에서 새 개발 환경을 설정합니다. 중복 데이터베이스에는 소스 제어에 등록한 데이터베이스 개체가 포함됩니다. 이 시나리오는 Fabric에서 애플리케이션 개발 수명 주기를 계속하고 Fabric의 소스 제어 통합을 활용하는 개발자를 위한 것입니다.

  1. 패브릭 SQL 데이터베이스를 소스 제어의 코드로 변환하는 시나리오를 완료합니다.
    • SQL 프로젝트와 Fabric 개체 메타데이터를 모두 사용하는 소스 제어 리포지토리에 분기가 있어야 합니다.
  2. 패브릭 작업 영역에서 소스 제어판을 엽니다. 소스 제어 메뉴의 분기 탭에서 새 작업 영역으로 분기를 선택합니다.
  3. 만들 분기 및 작업 영역의 이름을 지정합니다. 분기는 소스 제어 리포지토리에서 만들어지고 분기할 작업 영역과 연결된 분기의 커밋된 내용으로 채워집니다. 작업 영역은 패브릭에서 만들어집니다.
  4. 패브릭에서 새로 만든 작업 영역으로 이동합니다. 데이터베이스 만들기가 완료되면 새로 만든 데이터베이스에 이제 코드 리포지토리에 지정된 개체가 포함됩니다. 패브릭 쿼리 편집기를 열고 개체 탐색기에서 탐색하는 경우 데이터베이스에 새 테이블 및 기타 개체가 있습니다.

한 브랜치에서 다른 브랜치로 변경 사항 병합

이 시나리오에서는 배포에 사용할 수 있기 전에 원본 제어 리포지토리를 사용하여 데이터베이스 변경 내용을 검토합니다. 이 시나리오는 팀 환경에서 작업하고 원본 제어를 사용하여 데이터베이스 변경 내용을 관리하는 개발자를 위한 것입니다.

이전 시나리오에서 설명한 대로 동일한 리포지토리에 연결된 분기가 있는 두 개의 작업 영역을 만듭니다.

  1. 보조 분기의 데이터베이스를 사용하여 데이터베이스 개체를 변경합니다.
    • 예를 들어 기존 저장 프로시저를 수정하거나 새 테이블을 만듭니다.
  2. 패브릭의 소스 제어판에서 커밋 단추를 사용하여 소스 제어에 대한 이러한 변경 내용을 확인합니다.
  3. Azure DevOps 또는 GitHub에서 보조 브랜치에서 주 브랜치로 병합 요청을 만듭니다.
    • 끌어오기 요청에서 주 작업 영역과 보조 작업 영역 간의 데이터베이스 코드 변경 내용을 볼 수 있습니다.
  4. 끌어오기 요청을 완료하면 소스 제어가 업데이트되지만 기본 작업 영역의 Fabric에 있는 데이터베이스는 변경되지 않습니다. 주 데이터베이스를 변경하려면 패브릭의 소스 제어판에 있는 업데이트 단추를 사용하여 원본 제어에서 기본 작업 영역을 업데이트 합니다.

배포 후 스크립트를 사용하여 정적 데이터 관리

이 시나리오에서는 원본 제어를 사용하여 데이터베이스의 조회 테이블에 있는 행을 제어합니다. 이 기능, 배포 전 및 배포 후 스크립트를 사용하도록 설정하는 기능은 배포 파이프라인에도 적용되므로 동일한 스크립트를 사용하여 두 시나리오에서 정적 데이터를 관리할 수 있습니다.

  1. 원본 제어에 연결된 패브릭의 SQL 데이터베이스에서 정적 데이터를 관리하려는 테이블을 식별하거나 만듭니다. 예를 들어 애플리케이션에서 dbo.Colors 사용되며 자주 변경되지 않는 알려진 값 집합이 있는 테이블이 있을 수 있습니다.

  2. Fabric의 SQL 데이터베이스 편집기에서 새 쿼리 를 만듭니다. 쿼리 편집기에서 Colors 테이블의 내용을 관리하기 위해 MERGE 문을 추가합니다. 다음은 그 예입니다.

    MERGE dbo.Colors AS target
    USING (VALUES
        (1, 'Red'),
        (2, 'Green'),
        (3, 'Blue')
    ) AS source (Id, Name)
    ON target.Id = source.Id
    WHEN MATCHED THEN
        UPDATE SET Name = source.Name
    WHEN NOT MATCHED BY TARGET THEN
        INSERT (Id, Name) VALUES (source.Id, source.Name)
    WHEN NOT MATCHED BY SOURCE THEN
        DELETE;
    
  3. 쿼리 이름을 Post-Deployment-StaticData.sql하고 공유 쿼리로 이동합니다.

  4. 공유 쿼리에서 쿼리에 대한 ... 메뉴를 선택하고 배포 후 스크립트로 설정을 선택합니다.

이 쿼리는 소스 제어 또는 배포 파이프라인 배포에서 업데이트의 일부로 자동으로 실행되므로 소스 제어를 사용하여 테이블의 Colors 정적 데이터를 관리할 수 있습니다. 패브릭 쿼리 편집기에서 쿼리를 편집하고 소스 제어에 변경 내용을 커밋하여 시간이 지남에 따라 정적 데이터의 변경 내용을 관리할 수 있습니다. 또한 배포 전 및 배포 후 스크립트가 SQL 프로젝트에 포함되어 있으므로 Visual Studio Code 또는 기타 SQL 프로젝트 도구를 사용하여 로컬 컴퓨터에서 쿼리를 편집한 다음 해당 변경 내용을 소스 제어에 커밋할 수도 있습니다. SQL 프로젝트 설명서에서 배포 전 및 배포 후 스크립트에 대해 자세히 알아봅니다.