SqlPackage CLI 参考

SqlPackage 是一个命令行实用工具,用于在 Windows、Linux 和 macOS 环境中实现数据库可移植性和部署。 SqlPackage 命令行接口 (CLI) 分析参数、属性和 SQLCMD 变量的每个调用。

SqlPackage {parameters} {properties} {SQLCMD variables}
  • 参数 用于指定要执行的操作、源数据库和目标数据库以及其他常规设置。
  • 属性 用于修改操作的默认行为。
  • SQLCMD 变量 用于将值传递给源文件中的 SQLCMD 变量。

若要创建 SqlPackage 命令,必须指定操作及其附加参数。 (可选)可以添加属性和 SQLCMD 变量以进一步自定义命令。

在以下示例中,SqlPackage 用于创建当前数据库架构的 .dacpac 文件:

SqlPackage /Action:Extract /TargetFile:"C:\sqlpackageoutput\output_current_version.dacpac" \
 /SourceServerName:"localhost" /SourceDatabaseName:"Contoso" \
 /p:IgnoreUserLoginMappings=True /p:Storage=Memory

在该示例中,参数为:

  • /Action:Extract
  • /TargetFile:"C:\sqlpackageoutput\output_current_version.dacpac"
  • /SourceServerName:"localhost"
  • /SourceDatabaseName:"Contoso"

在该示例中,属性为:

  • /p:IgnoreUserLoginMappings=True
  • /p:Storage=Memory

SqlPackage 操作

  • 版本:返回 SqlPackage 应用程序的生成号。

  • 提取:创建数据层应用程序 (.dacpac) 文件,该文件包含连接的 SQL 数据库中的架构数据或是架构和用户数据。

  • 发布:增量更新数据库架构以便匹配源 .dacpac 文件的架构。 如果数据库不存在于服务器上,则发布操作将创建该数据库。 否则,将更新现有数据库。

  • 导出:将连接的 SQL 数据库(包括数据库架构和用户数据)导出到 BACPAC 文件 (.bacpac)。

  • 导入:将架构和表数据从 BACPAC 文件导入到新的用户数据库中。

  • DeployReport:创建表示发布操作将进行的更改的 XML 报表。

  • DriftReport:创建表示自注册数据库注册以来对其应用的更改的 XML 报表。

  • 脚本:创建 Transact-SQL 增量更新脚本,该脚本可更新目标的架构以匹配源的架构。

注意

虽然 Microsoft Entra ID 是 Azure Active Directory (Azure AD) 的新名称,但为了防止中断现有环境,Azure AD 仍保留在一些硬编码的元素中,例如 UI 字段、连接提供程序、错误代码和 cmdlet。 在本文中,这两个名称可以互换。

参数

某些参数在 SqlPackage 操作之间共享。 下面是汇总参数的表,如需详细信息,请单击特定操作页。

参数 缩写 提取 发布 导出 导入 DeployReport DriftReport 脚本
/AccessToken: /at x X X X X X x
/ClientId: /cid x
/DeployScriptPath: /dsp x x
/DeployReportPath: /drp x x
/Diagnostics: /d x X X X X X x
/DiagnosticsFile: /df x X X X X X x
/MaxParallelism: /mp x X X X X X x
/OutputPath: /op x X x
/OverwriteFiles: /of x X X X X x
/Profile: /pr x X x
/Properties: /p x X X X X x
/Quiet: /q x X X X X X x
/Secret: /secr x
/SourceConnectionString: /scs x X X X x
/SourceDatabaseName: /sdn x X X X x
/SourceEncryptConnection: /sec x X X X x
/SourceFile: /sf x X X x
/SourcePassword: /sp x X X X x
/SourceServerName: /ssn x X X X x
/SourceTimeout: /st x X X X x
/SourceTrustServerCertificate: /stsc x X X X x
/SourceUser: /su x X X X x
/TargetConnectionString: /tcs x X X x
/TargetDatabaseName: /tdn x X X X x
/TargetEncryptConnection: /tec x X X X x
/TargetFile: /tf x X X x
/TargetPassword: /tp x X X X x
/TargetServerName: /tsn x X X X x
/TargetTimeout: /tt x X X X x
/TargetTrustServerCertificate: /ttsc x X X X x
/TargetUser: /tu x X X X x
/TenantId: /tid x X X X X X x
/UniversalAuthentication: /ua x X X X X X x
/Variables: /v x x

属性

SqlPackage 操作支持大量属性来修改操作的默认行为。 通过添加到 /p:PropertyName=Value 命令行来完成属性的可选用法。 可以指定多个属性,并且可以多次指定某些属性(例如 /p:TableData=Product /p:TableData=ProductCategory)。 有关属性的详细信息,请参阅特定的操作页。

SQLCMD 变量

SQLCMD 变量可以从 SQL 项目内置到 .dacpac 文件中,然后使用 SqlPackage 发布脚本在部署期间设置。 有关将 SQLCMD 变量添加到 SQL 项目的详细信息,请参阅 SQL 项目文档

实用工具命令

版本

将 sqlpackage 版本显示为生成号。 可在交互提示和自动管道中使用。

SqlPackage /Version

帮助

可以使用 /?/help:True 显示 SqlPackage 使用情况信息。

SqlPackage /?

对于特定操作的特定参数和属性信息,除了使用该操作的参数之外,还要使用帮助参数。

SqlPackage /Action:Publish /?

退出代码

SqlPackage 命令将返回以下退出代码:

  • 0 = 成功
  • 非零 = 失败

后续步骤