Microsoft Fabric 中的 SQL 数据库源代码管理集成
本教程介绍如何使用 Fabric git 集成源代码管理处理 Fabric SQL 数据库。
Microsoft Fabric SQL 数据库具有源代码管理集成或“git 集成”,可让 SQL 用户跟踪其数据库对象在不同时间的定义。 此集成使团队能够:
- 将数据库提交到源代码管理,从而自动将实时数据库转换为配置的源代码管理存储库(如 Azure DevOps)中的代码。
- 基于源代码管理的内容更新数据库对象,从而在对数据库应用差异变更之前在 Azure DevOps 中验证代码。
如果不熟悉 git,建议查看以下资源:
本文介绍了一系列有用的方案,这些方案可单独或组合使用,以便通过 Fabric SQL 数据库管理开发流程:
先决条件
- 需要现有的 Fabric 容量。 如果没有,请启动 Fabric 试用版。
- 确保启用 Fabric SQL 数据库租户设置。
- 确保启用 Git 集成租户设置。
- 创建新的工作区或使用现有的 Fabric 工作区。
- 创建或使用现有的 Fabric SQL 数据库。 如果没有,请创建新的 Fabric SQL 数据库。
- 可选:安装 Visual Studio Code、VS 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 数据库项元数据添加到存储库。
- 将源代码管理存储库克隆到本地计算机。
- 在 Visual Studio Code 中打开克隆的文件夹。 与工作区关联的分支可能不是默认分支。 切换分支后,应在 VS Code 中看到名为
<yourdatabase>.SQLDatabase
的文件夹。 - 在数据库的文件夹结构中为至少一个要在数据库中创建的表创建一个
.sql
文件。 该文件应包含该表的CREATE TABLE
语句。 例如,在文件夹dbo/Tables
中创建一个名为MyTable.sql
的文件,使其包含以下内容: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 中设置新的开发环境,方法是让 Fabric 基于源代码管理定义创建一组重复的资源。 重复数据库将包含已签入源代码管理的数据库对象。 此方案面向在 Fabric 中继续其应用程序开发生命周期并利用 Fabric 中的源代码管理集成的开发人员。
- 完成方案将 Fabric SQL 数据库转换为源代码管理中的代码。
- 应在源代码管理存储库中包含同时具有 SQL 项目和 Fabric 对象元数据的分支。
- 在 Fabric 工作区中,打开“源代码管理”面板。 从“源代码管理”菜单的“分支”选项卡中,选择“将范围扩大到新工作区”。
- 指定将要创建的分支和工作区名称。 分支将在源代码管理存储库中创建,并填充与你正在创建分支的工作区相关联的分支的已提交内容。 工作区将在 Fabric 中创建。
- 导航到 Fabric 中新建的工作区。 数据库创建完成后,新创建的数据库现在包含代码存储库中指定的对象。 如果打开 Fabric 查询编辑器并在“对象资源管理器”中导航,则数据库具有新的(空)表和其他对象。
将一个分支的更改合并到另一个分支
在此方案中,你将使用源代码管理存储库查看数据库更改,然后才能进行部署。 此方案面向在团队环境中工作并使用源代码管理来管理其数据库更改的开发人员。
在同一存储库中创建两个具有关联分支的工作区,如前面的方案中所述。
- 使用辅助分支上的数据库,对数据库对象进行更改。
- 例如,修改现有存储过程或创建新表。
- 使用 Fabric 中的源代码管理面板上的“提交”按钮签入对源代码管理进行的这些更改。
- 在 Azure DevOps 或 GitHub 中,创建从辅助分支到主分支的拉取请求。
- 在拉取请求中,可以查看主工作区和辅助工作区之间数据库代码的变化。
- 完成拉取请求后,将更新源代码管理,但主工作区 Fabric 中的数据库不会更改。 若要更改主数据库,请使用 Fabric 中源代码管理面板上的“更新”按钮从源代码管理更新主工作区。