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作
| Action | Description |
|---|---|
| 版本 | 返回 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 |
是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
/ClientId: |
/cid |
否 | 是的 | 否 | 否 | 否 | 否 | 否 |
/DeployScriptPath: |
/dsp |
否 | 是的 | 否 | 否 | 否 | 否 | 是的 |
/DeployReportPath: |
/drp |
否 | 是的 | 否 | 否 | 否 | 否 | 是的 |
/Diagnostics: |
/d |
是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
/DiagnosticsFile: |
/df |
是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
/DiagnosticsPackageFile: |
/dpf |
否 | 是的 | 否 | 是的 | 否 | 否 | 否 |
/MaxParallelism: |
/mp |
是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
/OutputPath: |
/op |
否 | 否 | 否 | 否 | 是的 | 是的 | 是的 |
/OverwriteFiles: |
/of |
是的 | 是的 | 是的 | 否 | 是的 | 是的 | 是的 |
/Profile: |
/pr |
否 | 是的 | 否 | 否 | 是的 | 否 | 是的 |
/Properties: |
/p |
是的 | 是的 | 是的 | 是的 | 是的 | 否 | 是的 |
/Quiet: |
/q |
是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
/Secret: |
/secr |
否 | 是的 | 否 | 否 | 否 | 否 | 否 |
/SourceConnectionString: |
/scs |
是的 | 是的 | 是的 | 否 | 是的 | 否 | 是的 |
/SourceDatabaseName: |
/sdn |
是的 | 是的 | 是的 | 否 | 是的 | 否 | 是的 |
/SourceEncryptConnection: |
/sec |
是的 | 是的 | 是的 | 否 | 是的 | 否 | 是的 |
/SourceFile: |
/sf |
否 | 是的 | 否 | 是的 | 是的 | 否 | 是的 |
/SourcePassword: |
/sp |
是的 | 是的 | 是的 | 否 | 是的 | 否 | 是的 |
/SourceServerName: |
/ssn |
是的 | 是的 | 是的 | 否 | 是的 | 否 | 是的 |
/SourceTimeout: |
/st |
是的 | 是的 | 是的 | 否 | 是的 | 否 | 是的 |
/SourceTrustServerCertificate: |
/stsc |
是的 | 是的 | 是的 | 否 | 是的 | 否 | 是的 |
/SourceUser: |
/su |
是的 | 是的 | 是的 | 否 | 是的 | 否 | 是的 |
/TargetConnectionString: |
/tcs |
否 | 否 | 否 | 是的 | 是的 | 是的 | 是的 |
/TargetDatabaseName: |
/tdn |
否 | 是的 | 否 | 是的 | 是的 | 是的 | 是的 |
/TargetEncryptConnection: |
/tec |
否 | 是的 | 否 | 是的 | 是的 | 是的 | 是的 |
/TargetFile: |
/tf |
是的 | 否 | 是的 | 否 | 是的 | 否 | 是的 |
/TargetPassword: |
/tp |
否 | 是的 | 否 | 是的 | 是的 | 是的 | 是的 |
/TargetServerName: |
/tsn |
否 | 是的 | 否 | 是的 | 是的 | 是的 | 是的 |
/TargetTimeout: |
/tt |
否 | 是的 | 否 | 是的 | 是的 | 是的 | 是的 |
/TargetTrustServerCertificate: |
/ttsc |
否 | 是的 | 否 | 是的 | 是的 | 是的 | 是的 |
/TargetUser: |
/tu |
否 | 是的 | 否 | 是的 | 是的 | 是的 | 是的 |
/TenantId: |
/tid |
是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
/UniversalAuthentication: |
/ua |
是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 |
/Variables: |
/v |
否 | 否 | 否 | 否 | 是的 | 否 | 是的 |
属性
SqlPackage作支持许多属性来修改作的默认行为。 添加到 /p:PropertyName=Value 命令行以选择性地使用属性。 可以指定多个属性,并多次指定一些属性。 例如,可以使用 /p:TableData=Product /p:TableData=ProductCategory。 有关属性的详细信息,请参阅特定的作页。
SQLCMD 变量
可以从 SQL 项目将 SQLCMD 变量生成到 .dacpac 文件中。 使用 SqlPackage 发布 或 脚本在部署期间设置这些变量。 有关将 SQLCMD 变量添加到 SQL 项目的详细信息,请参阅 SQL 数据库项目扩展。
实用工具命令
版本
将 sqlpackage 版本显示为内部版本号。 在交互式提示和 自动化管道中使用。
SqlPackage /Version
帮助
使用 /? 或 /help:True 显示 SqlPackage 使用情况信息。
SqlPackage /?
对于特定于特定作的参数和属性信息,除了该作的参数之外,还使用 help 参数。
SqlPackage /Action:Publish /?
退出代码
SqlPackage 命令返回以下退出代码:
- 0 = 成功
- nonzero = failure