SQL 项目的工具可在多个开发环境和命令行接口中使用。 SQL 项目的主要工具是 SqlPackage 命令行实用工具、Visual Studio 中的 SQL Server Data Tools (SSDT)和 Visual Studio Code 的 SQL 数据库项目扩展 。
本文中包含的工具:
图形工具
这些工具为 SQL 项目、T-SQL 编辑器以及生成和发布过程提供图形界面。
SQL 数据库项目扩展 是 VS Code 的扩展。 此扩展为 SQL 项目、T-SQL 编辑器以及生成和发布过程提供图形界面。 该扩展也适用于具有相同功能的 Azure Data Studio 。
SQL Server Data Tools (SSDT) 是 Visual Studio 组件,它为 SQL 项目提供图形界面。 SSDT 为表、T-SQL 编辑器以及生成和发布过程提供可视化设计器。
功能集比较
| 功能 | VS Code | SSDT (VS2022-2026) | SDK 样式 SSDT,预览版 (VS2022) |
|---|---|---|---|
| 创建新的空项目 | 是的 | 是的 | 是的 |
| 从现有数据库创建新项目 | 是的 | 是的 | 是的 |
| 打开现有的 Microsoft.Build.Sql 项目 | 是的 | 否 | 是的 |
| 解决方案管理和操作 | 否 | 是的 | 是的 |
| 项目运行生成 | 是的 | 是的 | 是的 |
| 将项目发布到现有服务器 | 是的 | 是的 | 是的 |
| 将项目发布到本地开发实例 | 是1 | 是2 | 是2 |
| 发布选项/属性 | 是的 | 是的 | 是的 |
| 可以更新目标平台 | 是的 | 是的 | 是的 |
| SQLCMD 变量 | 是的 | 是的 | 是的 |
| 项目引用 | 是的 | 是的 | 是的 |
| Dacpac 引用 | 是的 | 是的 | 是的 |
| 包引用 | 是的 | 否 | 否 |
| 发布配置文件创建 | 是的 | 是的 | 是的 |
| 可以通过将 SQL 文件放置在项目文件夹中来添加 | 是的 | 否 | 是的 |
| 可以从生成中排除 SQL 文件 | 是的 | 是的 | 否 |
| 部署前/后脚本 | 是的 | 是的 | 是的 |
| 新建对象模板 | 是3 | 是的 | 是3 |
| 项目文件可以组织到文件夹中 | 是的 | 是的 | 是的 |
| 架构比较项目到数据库 | 是的 | 是的 | 是的 |
| 架构比较数据库到项目 | 是的 | 是的 | 否 |
| 图形表设计器 | 否 | 是的 | 是的 |
| 代码分析 - 启用/禁用规则 GUI | 否 | 是的 | 否 |
| 项目属性 – 生成输出设置 | 否 | 是的 | 是的 |
| 项目属性 - 数据库设置 GUI | 否 | 是的 | 否 |
| 项目运行 代码分析 | 是的 | 是的 | 否 |
| 对象重命名和重构 | 否 | 是的 | 否 |
| 项目模型中的数据库文件中提供的 Intellisense | 否 | 是的 | 否 |
- 本地开发实例是 SQL Server 容器。
- 本地开发实例是 SQL Server LocalDB 实例。
- 可用模板的有限子集
命令行工具
SqlPackage 是 DacFx 库的主要命令行实用工具,可实现数据库开发任务的自动化,例如将 .dacpac 部署到数据库或者将数据库的对象提取到 SQL 项目或 .dacpac。
可以使用 DacFx .NET 库生成自定义控制台应用程序,以自动执行数据库开发任务。 Microsoft.SqlServer.Dac 命名空间包含用于创建、部署和提取数据库对象的类,是 DacFx 库的其余部分的基础。
可以使用命令行执行或特定于 .dacpac 和 SQL 项目部署的任务生成 CI/CD 管道。 Azure DevOps 中的 GitHub sql-action 和 SqlAzureDacpacDeployment 是使用管理层下的 SqlPackage 促进部署数据库更改的任务示例。
转换工具
将 现有 SQL 项目转换为 SDK 样式项目的过程是通过手动编辑 .sqlproj 文件以包含新的 SDK 样式项目格式来完成的。 在开始此过程之前,建议同时备份项目文件和存档项目的 .dacpac。 通过比较从项目生成的“before”和“after”.dacpac,可确定转换过程已正确完成。
项目/解决方案管理
可以在解决方案文件中将多个 SQL 项目(和其他项目)逻辑分组在一起。 解决方案文件是一个或多个项目的容器,用于将项目作为组进行管理,包括生成操作。 大型解决方案可以分解为较小的解决方案,以提高性能和可管理性,或者为手头的相应任务动态生成。 slngen 解决方案文件生成器适用于 Microsoft.Build.Sql 项目,并且可用于以编程方式和按需方式为一组项目创建解决方案文件。
第三方工具
提供与 SQL 项目和数据库部署相关的功能的第三方工具。 某些工具是开源工具,例如 dbatools。
开发人员已利用 SQL 项目的扩展点(包括代码分析规则和自定义部署计划)共享其项目。 其中一些项目包括:
- https://github.com/tcartwright/SqlServer.Rules
- https://github.com/davebally/TSQL-Smells
- https://github.com/ErikEJ/SqlServer.Rules
- https://github.com/GoEddie/DeploymentContributorFilterer