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 文件的名称和位置。 此位置必须可由运行命令的用户写入,并且包含的文件夹必须存在。
导出操作还需要通过以下任一组合指定数据库源:
SourceServerName
和SourceDatabaseName
参数,或者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 的受支持全文文档类型。 |
后续步骤
- 了解有关 SqlPackage 的详细信息
- 使用 SqlPackage 进行故障排除
- 导出到 Azure Blob 存储