适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric 中的 SQL 数据库
发布配置文件是用于存储 SQL 项目部署配置的文件。 发布配置文件可以将目标连接信息、部署选项和 SQLCMD 变量值封装在一个可重用的 .publish.xml 文件中。 当部署需要特定设置(例如排除某些对象类型或忽略目标平台差异)时,发布配置文件特别有用。 每次部署时,不要指定这些选项,而是将它们保存在发布配置文件中并重复使用。
使用 SQL 项目时,可以创建和存储多个发布配置文件。 在部署期间,选择发布配置概况以应用一致的设置,而无需手动选择多个选项。
发布配置文件文件格式
发布配置文件是一个扩展名为 .publish.xml 的 XML 文件。 该文件包含用于定义 XML 路径/Project/PropertyGroup中的部署行为的属性和项。
发布配置文件可以包含以下信息:
- Target 连接字符串 - 目标数据库服务器的连接字符串
- 目标数据库名称 - 要部署到的数据库的名称
- 部署选项 - 控制部署行为的设置,例如,是删除源中的对象还是阻止可能的数据丢失
- SQLCMD 变量值 - 在 SQL 项目中定义的 SQLCMD 变量值,在部署时应用
示例发布配置文件
以下示例演示针对本地 SQL Server 实例的发布配置文件示例。 它设置两个部署选项,并为一个 SQLCMD 变量提供值:
<?xml version="1.0" encoding="utf-8"?>
<Project >
<PropertyGroup>
<IncludeCompositeObjects>True</IncludeCompositeObjects>
<TargetDatabaseName>AdventureWorks</TargetDatabaseName>
<AllowIncompatiblePlatform>True</AllowIncompatiblePlatform>
<ProfileVersionNumber>1</ProfileVersionNumber>
</PropertyGroup>
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<Value>staging</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
在项目文件中发布配置文件条目
将发布配置文件添加到 SQL 项目时,它会向项目文件(.sqlproj)添加一个条目,其中包含发布配置文件的路径:
<ItemGroup>
<None Include="Staging.publish.xml" />
</ItemGroup>
虽然可以通过使用 SqlPackage 的 /Profile: 参数来指定任何发布配置文件,但发布配置文件包括在项目文件中,将显示在 SQL 项目工具的解决方案资源管理器或数据库项目视图中。 此功能使在部署期间更容易管理和选择它们。
发布配置文件中的部署选项
部署选项控制将更改应用到目标数据库时部署引擎的行为。 这些选项对应于 SqlPackage Publish 操作 DacDeployOptions 和 DacFx API 中的类中可用的属性。
常用的部署选项包括:
| 选项 | 默认 | 说明 |
|---|---|---|
AllowIncompatiblePlatform |
False |
即使存在平台兼容性差异,也会尝试部署。 |
BlockOnPossibleDataLoss |
True |
如果更改可能导致数据丢失,则停止部署。 |
DropObjectsNotInSource |
False |
删除源项目中不存在的目标数据库中的对象。 |
IgnoreColumnOrder |
False |
忽略源和目标之间的列顺序差异。 |
ScriptDatabaseOptions |
True |
在部署过程中脚本化数据库级选项,例如兼容性级别。 |
有关部署选项及其默认值的完整列表,请参阅 SqlPackage 发布属性。
发布配置文件中的 SQLCMD 变量
在 SQL 项目中定义的 SQLCMD 变量 可以在发布配置文件中设置其值。 当发布配置文件用于部署时,配置文件中的 SQLCMD 变量值将替代项目中的任何默认值。
发布配置文件将 SQLCMD 变量存储为 <SqlCmdVariable> 项目:
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<Value>staging</Value>
</SqlCmdVariable>
<SqlCmdVariable Include="FirstHistoricalYear">
<Value>2005</Value>
</SqlCmdVariable>
</ItemGroup>
在命令行上指定的值将覆盖项目默认值和发布配置文件值。
使用工具发布配置文件
发布配置文件在 SQL 项目工具和 SqlPackage 命令行接口中均受到支持。
在 Visual Studio (SSDT)中,从 Publish 对话框中创建和加载发布配置文件。 配置部署设置并选择“ 另存为配置文件”时,设置将保存到 .publish.xml 文件中。 可以通过在“发布”对话框中选择“加载配置文件”来加载以前保存的配置文件。 发布配置文件作为项存储在 SQL 项目中,并显示在 解决方案资源管理器 中。
使用“ 添加新项 ”对话框将新的发布配置文件添加到项目,然后选择 “发布配置文件 ”项模板。 使用“添加现有项”>功能将现有的发布配置文件添加到项目中。
双击来自 解决方案资源管理器 的发布配置文件时,它将打开Publish对话框,其中包含应用的配置文件中的设置。 可以在部署之前查看或修改这些设置。
在 Visual Studio 中的 SDK 样式 SQL 项目中,从 Publish 对话框中创建和加载发布配置文件。 配置部署设置并选择“ 另存为配置文件”时,设置将保存到 .publish.xml 文件中。 可以通过在“发布”对话框中选择“加载配置文件”来加载以前保存的配置文件。
在 Visual Studio Code 的 SQL 数据库项目扩展中,通过 发布 对话框中的 另存为 选项创建发布配置文件。 发布配置文件被保存为一个 .publish.xml 文件,可以添加到项目中。 可以通过从“发布”对话框中的“选择配置文件”中选择以前保存的配置文件来加载该配置文件。
通过从项目上下文菜单中选择 “添加发布配置文件 ”选项,将新的发布配置文件添加到项目。 使用“添加现有项...”将现有的发布配置文件添加到项目中。
在 Visual Studio Code 中使用 SQL 数据库项目扩展时,发布配置文件会显示在 Database Projects 视图的项目节点下。 发布项目时,可以选择现有的发布配置文件,也可以继续不执行任何发布配置文件。
在 SQL Server Management Studio (SSMS)中,从 Publish 对话框中创建和加载发布配置文件。 配置部署设置并选择“ 另存为配置文件”时,设置将保存到 .publish.xml 文件中。 可以通过在“发布”对话框中选择“加载配置文件”来加载以前保存的配置文件。 发布配置文件作为项被存储在 SQL 项目中,并在 解决方案资源管理器 中显示。
使用“ 添加新项 ”对话框将新的发布配置文件添加到项目,然后选择 “发布配置文件 ”项模板。 使用“添加现有项”>将已有的发布配置文件添加到项目中。
使用 SqlPackage 命令行接口,通过 /Profile: 或 /pr: 参数指定发布配置文件:
sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /Profile:production.publish.xml
在命令行上指定的属性和 SQLCMD 变量值替代发布配置文件中的值。 有关详细信息,请参阅 SqlPackage 发布。