SQL 项目工具
SQL 项目的工具可在多种开发环境和命令行接口中使用。 SQL 项目的主要工具是 SqlPackage 命令行实用程序、Visual Studio 中的 SQL Server Data Tools (SSDT) 以及适用于 Azure Data Studio 和 Visual Studio Code 的 SQL 数据库项目扩展。
图形工具
这些工具为 SQL 项目、T-SQL 编辑器以及生成和发布过程提供图形界面。
SQL Server Data Tools (SSDT) 是一个 Visual Studio 组件,它为 SQL 项目提供图形界面。 SSDT 为表、T-SQL 编辑器及生成和发布过程提供可视化设计器。
SQL 数据库项目扩展是 Azure Data Studio (ADS) 和 VS Code 的扩展。 此扩展为 SQL 项目、T-SQL 编辑器及生成和发布过程提供图形界面。
功能集比较
功能 | SDK 样式的 SSDT | SSDT | ADS | VS Code |
---|---|---|---|---|
创建新的空项目 | X | X | X | X |
从现有数据库创建新项目 | X | X | X | |
打开现有 Microsoft.Build.Sql 项目 | X1 | X | X | |
解决方案管理和操作 | X | X | ||
项目运行构建 | X | X | X | X |
将项目发布到现有服务器 | X | X | X | X |
将项目发布到本地开发实例 | X2 | X2 | X3 | X3 |
发布选项/属性 | X | X | X | |
可更新目标平台 | X | X | X | X |
SQLCMD 变量 | X | X | X | X |
项目引用 | X | X | ||
Dacpac 引用 | X | X | X | |
包引用 | X | |||
发布配置文件创建 | X | X | X | |
可通过将 SQL 文件放置在项目文件夹中来添加它们 | X | X | X | |
可以从构建中排除 SQL 文件 | X | X | ||
预先/后期部署脚本 | X | X | X | X |
新项目模板 | X4 | X | X4 | X4 |
项目文件可组织到文件夹中 | X | X | X | X |
架构比较项目与数据库 | X | X | ||
架构比较数据库与项目 | X | X | ||
图形表设计器 | X | X | ||
代码分析 - 启用/禁用规则 | X | |||
项目属性 - 生成输出设置 | X | X | ||
项目属性 - 默认架构 | X | |||
项目属性 - 数据库设置 | X | |||
项目独立运行代码分析 | X | |||
对象重命名和重构 | X | |||
项目模型中的数据库文件中提供的 Intellisense | X | |||
SQL Server 对象资源管理器连接/查看对象 | X | X | X | X |
SQL Server 对象资源管理器上下文菜单项 | X | X | X | |
SQL Server 查询编辑器连接 | X | X | X |
- 在 Visual Studio 2022 预览版 2 中,SDK 样式的项目使用
.sqlprojx
扩展而不是.sqlproj
。 - 本地开发实例是 SQL Server LocalDB 实例。
- 本地开发实例是 SQL Server 容器。
- 可用模板的有限子集
命令行工具
SqlPackage 是 DacFx 库的主要命令行实用程序,支持自动执行数据库开发任务,例如将 .dacpac
部署到数据库,或将数据库的对象提取到 SQL 项目或 .dacpac
中。
可使用 DacFx .NET 库生成自定义控制台应用程序,以自动执行数据库开发任务。 Microsoft.SqlServer.Dac 命名空间包含用于创建、部署和提取数据库对象的类,并且是 DacFx 库其余部分的基础。
可使用命令行执行或特定于 .dacpac
和 SQL 项目部署的任务生成 CI/CD 管道。 GitHub sql-action 和 Azure DevOps 中的 SqlAzureDacpacDeployment 是使用管理层下的 SqlPackage 来帮助部署数据库更改的任务示例。
第三方工具
有第三方工具可提供与 SQL 项目和数据库部署相关的功能。 有些工具是开源的,例如 dbatools。
开发人员已利用围绕 SQL 项目的扩展点分享了其项目,包括代码分析规则和自定义部署计划。 其中一些项目包括:
- https://github.com/tcartwright/SqlServer.Rules
- https://github.com/davebally/TSQL-Smells
- https://github.com/GoEddie/DeploymentContributorFilterer