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 应用程序的生成号。
提取:创建包含连接的 SQL 数据库中的架构或架构和用户数据的数据层应用程序(.dacpac)文件。
发布:以增量方式更新数据库架构以匹配源 .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 |
/DiagnosticsPackageFile: | /dpf | 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 /?
对于特定于特定作的参数和属性信息,除了该作的参数之外,还使用 help 参数。
SqlPackage /Action:Publish /?
退出代码
SqlPackage 命令返回以下退出代码:
- 0 = 成功
- nonzero = failure
后续步骤
- 详细了解 SqlPackage 提取
- 详细了解 SqlPackage 发布
- 详细了解 SqlPackage 导出
- 详细了解 SqlPackage 导入
- 详细了解如何 SqlPackage 故障排除问题
- 在 DacFx GitHub 存储库中共享有关 SqlPackage 的反馈