源代码管理(预览版)

适用于:✅ Microsoft Fabric 中的仓库

本文介绍 Git 集成和部署管道如何适用于 Microsoft Fabric 中的仓库。 了解如何设置与存储库的连接,如何管理仓库以及如何在不同的环境中部署仓库。 Fabric仓库的源代码管理目前是预览功能。

可以将 Git 集成部署管道用于不同的场景:

  • 使用 Git 和 SQL 数据库项目管理单个数据库对象中的增量更改、团队协作和提交历史记录。
  • 使用部署管道将代码更改推进到不同的预生产环境和生产环境。

Git 集成

Microsoft Fabric中的 Git 集成使开发人员能够将其开发过程、工具和最佳做法直接集成到 Fabric 平台中。 它允许在 Fabric 中开发的开发人员:

  • 备份并对其工作进行版本控制
  • 根据需要还原到以前的阶段
  • 使用 Git 分支与他人协作或单独工作
  • 应用熟悉的源代码管理工具功能来管理Fabric项目

有关 Git 集成过程的详细信息,请参阅:

设置与源码控制的连接

从“工作区设置”页中,可以轻松设置与存储库的连接,以提交和同步更改

  1. 若要设置连接,请参阅 Git 集成入门。 按照说明将连接到 Git 存储库,使用 Azure DevOps 或 GitHub 作为 Git 提供程序。
  2. 连接后,项目(包括仓库)将出现在源代码管理面板中。 源控制设置中Fabric门户仓库的截图。
  3. 成功将仓库实例连接到 Git 存储库后,可在存储库中看到仓库文件夹结构。 现在可以执行将来的操作,例如“创建拉取请求”。

Git 中与仓库相关的数据库项目

下图列举了存储库中每个仓库项的文件结构:

将仓库项提交到 Git 存储库时,该仓库将转换为源代码格式,用作 SQL 数据库项目。 SQL 项目 SQL 对象的本地表示形式,这些对象包含了用于某一个数据库的架构(例如,表、存储过程或函数)。 数据库对象的文件夹结构按架构/对象类型进行组织。 仓库中的每个对象都用包含其数据定义语言 (DDL) 定义的 .sql 文件表示。 SQL 数据库项目中不包括数据仓库表数据和 SQL 安全功能

共享查询也会提交到存储库,并继承它们保存时使用的名称。

对于启用了源代码管理的工作区,通过外部工具(例如,在 SSMS 中执行查询)所做的任何架构更改都将显示为仓库中未提交的更改。 用户必须在Fabric门户中通过工作区源代码管理查看和提交这些更改。

部署管道

还可以使用部署管道跨不同环境(例如开发、测试和生产)部署仓库代码。 部署管道不会公开数据库项目。

使用以下步骤通过部署管道完成仓库部署。

  1. 创建新的部署管道或打开现有的部署管道。 有关详细信息,请参阅部署管道入门
  2. 根据部署目标将工作区分配到不同的阶段。
  3. 选择、查看和比较不同阶段之间的项目(包括仓库),如以下示例所示。 Fabric 门户的开发、测试和生产阶段的屏幕截图。
  4. 选择“部署”以跨开发、测试和生产阶段部署仓库

有关Fabric部署管道过程的详细信息,请参阅部署管道简介

源代码管理限制

Git 集成限制

  • 目前,如果用于 ALTER TABLE 在数据库项目中添加约束或列,则部署过程会删除并重新创建该表,这会导致数据丢失。 若要保留表定义和数据,请考虑以下解决方法:
    • 使用CREATE TABLEINSERTCREATE TABLE AS SELECT、或克隆表在仓库中创建新表副本。
    • 根据需要,使用ALTER TABLE通过新的约束或列修改新表定义。
    • 删除旧表。
    • 使用 sp_rename 将新表重命名为旧表的名称。
    • 以完全相同的方式修改 SQL 数据库项目中旧表的定义。 现在,源代码管理中的仓库 SQL 数据库项目应该与实时仓库中的一致。
  • 目前,不要创建具有仓库输出目标的数据流 Gen2。 名为 DataflowsStagingWarehouse 的新项显示在存储库中,并阻止从 Git 提交和更新。
  • Fabric Git 集成不支持 SQL 分析终结点项。
  • SQL 分析终结点和仓库之间的跨项依赖关系、项排序和同步差距会影响“分支到新的或现有的工作区”,并在开发和持续集成期间“切换到其他分支”工作流。

部署管道的限制

  • 目前,如果用于 ALTER TABLE 在数据库项目中添加约束或列,则部署过程会删除并重新创建该表,这会导致数据丢失。
  • 目前,不要创建具有仓库输出目标的数据流 Gen2。 名为 DataflowsStagingWarehouse 的新项出现在部署管道中并阻止部署。
  • Fabric 部署管道不支持 SQL 分析端点项。
  • SQL 分析终结点与仓库之间的跨项依赖关系、项排序和同步差距会影响 Fabric 部署管道的工作流。

不支持的方案

当不同工作区中的仓库具有不同的排序规则时,以下 CI/CD 工作流未正式支持。 即使这些操作可能会成功且没有错误,但它们可能会导致元数据错误。

在所有这些情况下,如果发生排序规则不匹配,请使用Fabric工具箱中的 Python 脚本 scripts/dw-collation-error-update-tmsl/pbi_interactive.py GitHub 存储库更新数据集(TMSL)排序规则以匹配仓库排序规则。

情景 说明 风险
部署管道 不支持通过管道阶段(例如,开发→测试→ Prod)提升仓库内容,其中目标仓库的排序规则与源不同。 部署可能会成功,但数据集排序规则不会更新,以匹配目标仓库排序规则。
扩展到新的或现有的工作区 不支持使用 Git 集成从现有工作区分支到仓库具有不同排序规则的新工作区或现有工作区。 仓库内容已同步,但整理顺序元数据尚未协调。
在工作区上切换分支 不支持切换到与具有不同排序规则的仓库相关联的分支,该仓库处于与 Git 连接的工作区中。 同步的内容可能会延续与当前仓库不匹配的排序规则的假设。
通过分支合并工作区之间的更改 不支持在仓库排序规则不同的情况下跨工作区合并 Git 分支。 合并可能在 Git 级别成功,但生成的数据集排序规则并不反映目标仓库的排序规则。