SQL 数据库项目是 SQL 对象的本地表示形式,这些对象包含了用于某一个数据库的架构(例如,表、存储过程或函数)。 SQL 数据库项目的开发周期有助于将数据库开发集成到持续集成和持续部署(CI/CD)工作流中,这些工作流被公认为开发的最佳实践。 在 SSMS 中,可以使用 Microsoft.Build.Sql 预览版中的项目,通过提供数据库对象的本地定义来帮助实现、管理和协作数据库更改。
本文介绍如何在 SQL Server Management Studio(SSMS)中使用 SQL 数据库项目作为数据库 DevOps 工作流的一部分或用于定位数据库 DevOps 工作流。 有关 SQL 数据库项目的详细信息,请参阅 SQL 数据库项目。
先决条件
创建新项目
若要在 SSMS 中使用 SQL 数据库项目,需要一个包含项目文件的本地文件夹。 可以通过从现有数据库提取对象或从头开始创建新对象文件来启动项目。
注释
从解决方案资源管理器打开文件时,SSMS 可能会提示你连接到服务器。 可以在不连接到数据库的情况下脱机执行 SQL 数据库项目开发。
从现有数据库添加对象
使用 SqlPackage 将架构从现有数据库提取到按对象类型组织的单个 .sql 文件中。 运行以下命令,使用数据库对象创建文件夹结构:
sqlpackage /Action:Extract /SourceConnectionString:"<connection-string>" /TargetFile:"<temp-folder>" /p:ExtractTarget=SchemaObjectType
该 /p:ExtractTarget=SchemaObjectType 参数根据架构和对象类型(例如, dbo/Tables)将提取的文件组织到子文件夹中( 例如, dbo/StoredProcedures。 提取到项目目录外部的临时文件夹,然后使用 Windows 资源管理器将所需内容复制到项目文件夹中。
有关 SqlPackage 提取选项的详细信息,请参阅 SqlPackage 提取。
创建新对象
通过在项目文件夹中创建 .sql 文件,向项目添加新的数据库对象。 每个文件应包含一个数据库对象的单个 CREATE 语句。 例如,表定义:
CREATE TABLE [dbo].[Products]
(
[ProductId] INT NOT NULL PRIMARY KEY,
[ProductName] NVARCHAR (100) NOT NULL,
[Price] DECIMAL (10, 2) NOT NULL
);
使用子文件夹(如 dbo/Tables 或 Sales/StoredProcedures)按架构和对象类型组织文件。 此结构与 SqlPackage 提取的输出匹配,并使在项目增长时更容易定位对象。 默认情况下,SQL 项目生成过程包括项目文件夹及其子文件夹中的所有 .sql 文件。
SSMS 提供常见项的模板,可帮助你入门。 若要添加新项,请在解决方案资源管理器中右键单击项目,选择“ 添加新>项”,然后从 SQL 对象模板列表中选择。
打开现有项目
若要在 SSMS 中打开现有的 SQL 数据库项目,请选择 “文件>打开>项目/解决方案 ”并导航到 .sqlproj 该文件。
重要
SSMS 仅支持 SDK 样式 Microsoft.Build.Sql 项目。 支持的 SDK 最低版本为 2.1.0。 如果在 Visual Studio 中创建了原始 SQL 项目,则必须在打开它之前将其转换为 SDK 样式格式。
有关将原始 SQL 项目转换为 SDK 样式格式的指南,请参阅 将原始 SQL 项目转换为 SDK 样式项目。
生成项目并部署更改
SQL 项目工作流由两个主要步骤组成:生成项目以验证和编译架构,并将编译的输出部署到目标数据库。
项目构建
生成 SQL 项目会验证对象之间的关系,并针对指定的目标平台检查 T-SQL 语法。 生成过程生成一个 .dacpac 文件,其中包含数据库架构的已编译模型。
若要在 SSMS 中生成项目,请在解决方案资源管理器中右键单击该项目,然后选择“ 生成”。
生成输出显示所有错误或警告信息。 错误是指阻止部署的问题,例如视图引用了不存在的表。 警告突出显示了对象名称中不一致的大小写等潜在问题。
构建成功时,.dacpac 文件将在项目目录内的 bin\Debug 文件夹中创建。
有关排查生成问题的详细信息,请参阅 排查 SQL 项目生成错误。
部署变更
生成项目后,使用 SSMS 中的“发布”对话框将 .dacpac 部署到目标数据库。 部署过程将.dacpac与目标数据库进行比较,并生成必要的CREATE、ALTER或DROP语句,以便将数据库与项目同步。
若要部署,请在解决方案资源管理器中右键单击项目,然后选择“ 发布”。 在“发布”对话框中,配置目标数据库连接,然后选择 “发布 ”以应用更改或 生成脚本 ,以在执行之前查看部署脚本。
发布过程是幂等的,因此可以多次部署相同的 .dacpac ,而不会造成问题。 此方法使你能够使用相同的编译产物部署到多个环境(开发、测试、生产)。
有关部署选项和配置的详细信息,请参阅 SQL 数据库项目入门。