通过


发布档案概述

适用于:SQL ServerAzure 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 发布