Applies to:✅SQL 数据库 Microsoft Fabric
本教程介绍如何使用 Fabric git 集成源代码管理处理 Fabric SQL 数据库。
Microsoft Fabric中的 SQL 数据库具有源代码管理集成或“git 集成”,使 SQL 用户能够跟踪其数据库对象随时间推移的定义。 此集成使团队能够:
- 将数据库提交到源代码管理,该控件会自动将实时数据库转换为配置的源代码管理存储库中的代码(例如Azure DevOps)。
- 从源代码管理库的内容更新数据库对象,验证库中的代码后,再对数据库应用差异变更。
如果不熟悉 git,建议查看以下资源:
本文介绍了一系列有用的方案,这些方案可单独或组合使用,以便通过 Fabric SQL 数据库管理开发流程:
本文中的方案在“公开的数据”一集中进行了介绍。 请观看视频,以大致了解 Fabric 中的源代码管理集成:
先决条件
- 需要现有的 Fabric 容量。 如果没有, 请启动 Fabric 试用版。
- 确保启用 Git 集成租户设置。
- 创建新的工作区或使用现有的 Fabric 工作区。
- 创建或使用现有的 Fabric SQL 数据库。 如果还没有 SQL 数据库,请在 Fabric 中创建新的 SQL 数据库。
- 可选:安装适用于 VS Code 的 Visual Studio Code、MSSQL 扩展和 SQL 项目扩展。
安装
这种存储库连接适用于工作区级别,因此存储库中的单个分支与该工作区相关联。 存储库可以有多个分支,但只有在工作区设置中选择的分支中的代码才会直接影响工作区。
有关将工作区连接到源代码管理存储库的步骤,请参阅 Git 集成入门。 工作区可以连接到Azure DevOps或GitHub远程存储库。
将 Fabric SQL 数据库添加到源代码管理
在此方案中,你将向源代码管理提交数据库对象。 你可能正在开发这样一个应用程序:直接在测试数据库中创建对象,并在源代码管理中跟踪该数据库,就像应用程序代码一样。 因此,你可以访问数据库对象的定义历史记录,并且可以使用 Git 概念(如分支和合并)进一步自定义开发过程。
- 在 Fabric SQL 编辑器、SQL Server Management Studio、Visual Studio Code 的 MSSQL 扩展或其他外部工具中连接到你的 SQL 数据库。
- 在数据库中创建新表、存储过程或其他对象。
- 选择数据库的
...菜单,选择“刷新 Git 同步状态”。 - 选择“源代码管理”按钮以打开源代码管理面板。
- 选择所需数据库旁边的复选框。 选择 “提交”。 Fabric 服务从数据库读取对象定义,并将其写入远程存储库。
- 现在可以在代码存储库源视图中查看数据库对象的历史记录。
继续编辑数据库(包括编辑现有对象)时,可以按照前面的步骤将这些更改提交到源代码管理。
从源代码管理更新 Fabric SQL 数据库
在此方案中,你将在 VS Code 的 SQL 项目扩展中创建数据库对象作为代码,然后将文件提交到源代码管理,然后再从源代码管理集成更新 Fabric SQL 数据库。 此方案针对喜欢在 VS Code 中工作、拥有使用 SQL 项目的现有应用程序或有更高级 CI/CD 管道需求的开发人员。
- 请确保已安装最新版本的 VS Code 以及 VS Code 的 mssql 和 SQL 项目扩展。
- 你将使用 VS Code 的集成 git 源代码管理。
- 在工作区创建一个新的 SQL 数据库,然后将其提交到源代码管理,但不添加任何对象。 此步骤将空的 SQL 项目和 SQL 数据库项元数据添加到存储库。
- 将源代码管理存储库克隆到本地计算机。
- 如果使用Azure DevOps,请选择源代码管理项目的
...上下文菜单。 选择 Clone,将Azure DevOps存储库复制到本地计算机。 如果不熟悉Azure DevOps,请参阅 Azure DevOps 的 Code with git 指南。 - 如果使用 GitHub,请选择存储库中的 Code 按钮,并将 URL 复制到本地计算机。 如果不熟悉GitHub,请参阅 cloning a repository 指南。
- 如果使用Azure DevOps,请选择源代码管理项目的
- 在Visual Studio Code中打开克隆的文件夹。 与工作区关联的分支可能不是默认分支。 切换分支后,应在 VS Code 中看到名为
<yourdatabase>.SQLDatabase的文件夹。 - 在数据库的文件夹结构中为至少一个要在数据库中创建的表创建一个
.sql文件。 该文件应包含该表的CREATE TABLE语句。 例如,在文件夹MyTable.sql中创建一个名为dbo/Tables的文件,使其包含以下内容:CREATE TABLE dbo.MyTable ( Id INT PRIMARY KEY, ExampleColumn NVARCHAR(50) ); - 为了确保语法有效,可以使用 SQL 项目验证数据库模型。 添加文件后,使用 VS Code 中的“数据库项目”视图生成项目。
- 成功生成后,通过 VS Code 中的源代码管理视图或你首选的本地 git 界面将文件提交到源代码管理。
- 将您的提交推送或同步到远程存储库。 检查新文件是否已显示在Azure DevOps或GitHub中。
- 返回到 Fabric Web 界面,并在工作区中打开“源代码管理”面板。 你可能已经有一个警告,指出“你有来自 git 的待处理更改”。 选择“更新(全部更新)”按钮,将 SQL 项目中的代码应用到数据库。
- 更新之后,您可能会看到数据库状态立即显示为“未提交”。 这是因为 Git 集成功能会直接比较为项定义生成的所有文件内容,并且可能存在一些无意差异。 一个示例是列的行内属性。 在这种情况下,您需要在 Fabric Web 界面中执行回源控制提交操作,以便将定义与作为提交操作一部分生成的内容进行同步。
- 更新完成后,使用所选工具连接到数据库。 添加到 SQL 项目中的对象在数据库中可见。
注意事项
对本地 SQL 项目进行更改时,如果出现语法错误或使用了 Fabric 中不支持的功能,数据库更新将失败。 必须先手动还原源代码管理中的更改,然后才能继续。
从源代码管理更新 Fabric 中的 SQL 数据库涉及进行 SQL 项目构建和 SqlPackage 发布操作。 SQL 项目生成会验证 SQL 文件的语法并生成 .dacpac 文件。 SqlPackage 发布操作确定了更新数据库以使数据库与 .dacpac 文件匹配所需的更改。 由于 Fabric 接口的简化性质,以下选项应用于 SqlPackage 发布作:
/p:ScriptDatabaseOptions = false/p:DoNotAlterReplicatedObjects = false/p:IncludeTransactionalScripts = true/p:GenerateSmartDefaults = true
还可以将源代码控制的 SQL 项目克隆到本地计算机,以便在 VS Code、Visual Studio 或其他 SQL 项目工具中编辑。 应在本地生成 SQL 项目,以在将更改提交到源代码管理之前对其进行验证。
创建分支工作区
在此方案中,你将在 Fabric 中设置新的开发环境,方法是让 Fabric 基于源代码管理定义创建一组重复的资源。 副本数据库将包含已签入到源代码管理中的数据库对象。 此方案面向在 Fabric 中继续其应用程序开发生命周期并利用 Fabric 中的源代码管理集成的开发人员。
- 完成情景将 Fabric SQL 数据库转换为版本控制中的代码。
- 应在源代码管理存储库中包含同时具有 SQL 项目和 Fabric 对象元数据的分支。
- 在 Fabric 工作区中,打开“源代码管理”面板。 从“源代码管理”菜单的“分支”选项卡中,选择“将范围扩大到新工作区”。
- 指定将要创建的分支和工作区名称。 分支将在源代码管理存储库中创建,并填充与你正在创建分支的工作区相关联的分支的已提交内容。 工作区将在 Fabric 中创建。
- 导航到 Fabric 中新建的工作区。 数据库创建完成后,新创建的数据库现在包含代码存储库中指定的对象。 如果打开 Fabric 查询编辑器并在“对象资源管理器”中导航,则数据库具有新的(空)表和其他对象。
将某个分支的更改合并到另一个分支
在此方案中,你将使用源代码管理存储库查看数据库更改,然后才能进行部署。 此方案面向在团队环境中工作并使用源代码管理来管理其数据库更改的开发人员。
在同一存储库中创建两个具有关联分支的工作区,如前面的方案中所述。
- 使用辅助分支上的数据库,对数据库对象进行更改。
- 例如,修改现有存储过程或创建新表。
- 使用 Fabric 中的源代码管理面板上的“提交”按钮签入对源代码管理进行的这些更改。
- 在Azure DevOps或GitHub中,创建从辅助分支到主分支的拉取请求。
- 在拉取请求中,可以查看主工作区和辅助工作区之间数据库代码的变化。
- 完成拉取请求后,将更新源代码管理,但主工作区 Fabric 中的数据库不会更改。 若要更改主数据库,请使用 Fabric 中源代码管理面板上的“更新”按钮从源代码管理更新主工作区。
相关内容
- 在Microsoft Fabric中的
SQL 数据库 - 教程:Fabric 中的生命周期管理
- SQL 项目概述
- SQL 项目工具