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 = 成功
- 非零 = 失败
后续步骤
- 了解有关 SqlPackage 提取的详细信息
- 了解有关 SqlPackage 发布的详细信息
- 了解有关 SqlPackage 导出的详细信息
- 了解有关 SqlPackage 导入的详细信息
- 详细了解如何排查 SqlPackage 的问题
- 在 DacFx GitHub 存储库中共享有关 SqlPackage 的反馈