SqlPackage 导出的参数和属性

SqlPackage 导出操作将连接的数据库导出到 BACPAC 文件 (.bacpac)。 默认情况下,所有表的数据将包含在 .bacpac 文件中。 你可以选择仅指定要为其导出数据的表的子集。 导出操作是 SqlPackage 的数据库可移植性功能的一部分。

注意

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

注意

对于低于 200GB 的数据库,SqlPackage 导出性能最佳。 对于较大的数据库,建议使用本文中提供的属性和 SqlPackage 故障排除中的提示来优化操作,或者通过 Parquet 文件中的数据实现数据库可移植性。

命令行语法

SqlPackage 使用在命令行上指定的参数、属性和 SQLCMD 变量启动指定的操作。

SqlPackage /Action:Export {parameters} {properties}

必需的参数

导出操作需要一个 TargetFile 参数来指定要创建的 .bacpac 文件的名称和位置。 此位置必须可由运行命令的用户写入,并且包含的文件夹必须存在。

导出操作还需要通过以下任一组合指定数据库源:

  • SourceServerNameSourceDatabaseName 参数,或者
  • SourceConnectionString 参数。

示例

# example export from Azure SQL Database using SQL authentication and a connection string
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;Persist Security Info=False;User ID=sqladmin;Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

# example export using short form parameter names, skips schema validation
SqlPackage /a:Export /ssn:"{yourserver}.database.windows.net,1433" /sdn:"AdventureWorksLT" /su:"sqladmin" \
    /sp:"{your_password}" /tf:"C:\AdventureWorksLT.bacpac" /p:VerifyExtraction=False

# example export using Microsoft Entra managed identity
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;Authentication=Active Directory Managed Identity;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

# example export connecting using Microsoft Entra username and password
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;Authentication=Active Directory Password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;User ID={yourusername};Password={yourpassword}"

# example export connecting using Microsoft Entra universal authentication
SqlPackage /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" /UniversalAuthentication:True \
    /SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

导出操作的参数

参数 缩写 说明
/AccessToken: /at: {string} 指定要在连接到目标数据库时使用的基于令牌的身份验证访问令牌。
/Action: /a: 导出 指定要执行的操作。
/AzureCloudConfig: /acc: {string} 指定用于连接到 Microsoft Entra ID 的自定义终结点,格式为:AzureActiveDirectoryAuthority={value};DatabaseServicePrincipalName={value}"。
/Diagnostics: /d: {True|False} 指定诊断日志记录是否输出到控制台。 默认为 False。
/DiagnosticsFile: /df: {string} 指定一个用于存储诊断日志的文件。
/MaxParallelism: /mp: {int} 指定针对数据库运行的并发操作的并行度。 默认值为 8。
/OverwriteFiles: /of: {True|False} 指定 SqlPackage 是否应覆盖现有文件。 指定 false 会导致 SqlPackage 在遇到现有文件时中断操作。 默认值为 True。
/Properties: /p: {PropertyName}={Value} 特定于操作的属性指定名称值对;{PropertyName}={Value}。
/Quiet: /q: {True|False} 指定是否隐藏详细反馈。 默认为 False。
/SourceConnectionString: /scs: {string} 指定源数据库的有效 SQL Server/Azure 连接字符串。 如果指定了此参数,则应该独立于所有其他源参数来使用此参数。
/SourceDatabaseName: /sdn: {string} 定义源数据库的名称。
/SourceEncryptConnection: /sec: {Optional|Mandatory|Strict|True|False} 指定是否应该将 SQL 加密用于源数据库连接。 默认值为 True。
/SourceHostNameInCertificate: /shnic: {string} 指定在使用 TLS 加密通信层时用于验证源 SQL Server TLS/SSL 证书的值。
/SourcePassword: /sp: {string} 对于 SQL Server 身份验证方案,定义要用于访问源数据库的密码。
/SourceServerName: /ssn: {string} 定义承载源数据库的服务器的名称。
/SourceTimeout: /st: {int} 指定建立与源数据库的连接的超时时间(以秒为单位)。
/SourceTrustServerCertificate: /stsc: {True|False} 指定是否使用 TLS 对源数据库连接进行加密,并绕过证书链来验证信任。 默认值为 False。
/SourceUser: /su: {string} 对于 SQL Server 身份验证方案,定义要用于访问源数据库的 SQL Server 用户。
/TargetFile: /tf: {string} 指定要用作操作(而不是数据库)目标的目标文件(即 .dacpac 文件)。 如果使用此参数,则其他目标参数应无效。 对于仅支持数据库目标的操作,此参数应该无效。
/TenantId: /tid: {string} 表示 Microsoft Entra 租户 ID 或域名。 此选项是支持来宾用户或已导入的 Microsoft Entra 用户以及 outlook.com、hotmail.com 或 live.com 等 Microsoft 帐户的必需选项。 如果省略此参数,将使用 Microsoft Entra ID 的默认租户 ID(假定经过身份验证的用户是此租户的本机用户)。 但是,在这种情况下,不支持在此 Microsoft Entra ID 中托管的任何来宾或已导入的用户和/或 Microsoft 帐户,并且操作将失败。
有关详细信息,请参阅 SQL 数据库和 Azure Synapse Analytics 的通用身份验证(SSMS 对 MFA 的支持)
/ThreadMaxStackSize: /tmss: {int} 指定运行 SqlPackage 操作的线程的最大大小(以 MB 为单位)。 仅当遇到分析非常大的 Transact-SQL 语句时出现的堆栈溢出异常时,才应使用此选项。
/UniversalAuthentication: /ua: {True|False} 指定是否应使用通用身份验证。 如果设置为 True,则激活交互式身份验证协议以支持 MFA。 此选项还可用于在不使用 MFA 时进行 Microsoft Entra 身份验证,方法是使用需要用户输入用户名和密码或集成身份验证(Windows 凭据)的交互式协议。 如果将 /UniversalAuthentication 设置为 True,则无法在 SourceConnectionString (/scs) 中指定 Microsoft Entra 身份验证。 如果将 /UniversalAuthentication 设置为 False,则必须在 SourceConnectionString (/scs) 中指定 Microsoft Entra 身份验证。
有关详细信息,请参阅 SQL 数据库和 Azure Synapse Analytics 的通用身份验证(SSMS 对 MFA 的支持)

特定于 Export 操作的属性

properties 价值 说明
/p: CommandTimeout=(INT32 '60') 指定针对 SQL Server 执行查询时的命令超时(以秒为单位)。
/p: CompressionOption=({Normal|Maximum|Fast|SuperFast|NotCompressed} 'Normal') 指定压缩类型。
/p: DatabaseLockTimeout=(INT32 '60') 指定针对 SQLServer 执行查询时的数据库锁超时(以秒为单位)。 使用 -1 表示无限期等待。
/p: HashObjectNamesInLogs=(BOOLEAN 'False') 指定是否用随机哈希值替换日志中的所有对象名称。
/p: IgnoreIndexesStatisticsOnEnclaveEnabledColumns=(BOOLEAN 'False') 指定是否应忽略使用随机加密和启用了 enclave 的列加密密钥加密的列上的索引或统计信息(不包括在生成的 bacpac 中)。 默认情况下 (false) 使用随机加密和启用 enclave 的列加密密钥加密的列上的任何索引或统计信息将阻止导出操作。
/p: LongRunningCommandTimeout=(INT32 '0') 指定针对 SQL Server 执行查询时的长时间运行命令超时(以秒为单位)。 使用 0 表示无限期等待。
/p: Storage=({File|Memory}) 指定在提取过程中使用的架构模型的后备存储的类型。 “Memory”是 SqlPackage 的 .NET Core 版本的默认值。 “File”仅可用作 SqlPackage 的 .NET Framework 版本的默认值。
/p: TableData=(STRING) 指示将从中提取数据的表。 请按以下格式指定表名,不一定要使用括号来括住名称部分:schema_name.table_identifier。 可以多次指定此属性以指示多个选项。
/p: TargetEngineVersion=({Default|Latest|V11|V12} 'Latest') 此属性已弃用,不建议使用。 指定 Azure SQL 数据库的目标引擎的预期版本。
/p: TempDirectoryForTableData=(STRING) 指定用于在将表数据写入包文件前缓冲表数据的临时备用目录。 此位置中所需的空间可能很大,相对于数据库的实际大小而言。
/p: VerifyExtraction=(BOOLEAN 'True') 指定是否应验证提取的架构模型。 如果设置为 true,则在 dacpac 或 bacpac 上运行架构验证规则。
/p: VerifyFullTextDocumentTypesSupported=(BOOLEAN 'False') 指定是否验证适用于 Microsoft Azure SQL Database v12 的受支持全文文档类型。

后续步骤