SqlPackage 发布参数、属性和 SQLCMD 变量

SqlPackage 发布操作增量更新目标数据库的架构以便匹配源数据库的结构。 如果发布包含所有表或表子集的用户数据的部署包,则会更新架构和表数据。 数据部署覆盖目标数据库的现有表中的架构和数据。 对于未包含在部署包中的表,数据部署将不会更改目标数据库中的现有架构或数据。 如果经过身份验证的用户具有创建数据库权限,则可通过发布操作创建新数据库。 现有数据库上的发布操作所需的权限为

注意

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

命令行语法

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

SqlPackage /Action:Publish {parameters} {properties} {sqlcmd variables}

注意

提取具有 SQL 身份验证用户凭据的数据库时,密码将替换为具有合适复杂性的不同密码。 假定在发布 dacpac 后,用户密码已更改。

示例

# example publish from Azure SQL Database using SQL authentication and a connection string
SqlPackage /Action:Publish /SourceFile:"C:\AdventureWorksLT.dacpac" \
    /TargetConnectionString:"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 publish using short form parameter names, skips schema validation
SqlPackage /a:Publish /tsn:"{yourserver}.database.windows.net,1433" /tdn:"AdventureWorksLT" /tu:"sqladmin" \
    /tp:"{your_password}" /sf:"C:\AdventureWorksLT.dacpac" /p:VerifyDeployment=False

# example publish using Microsoft Entra managed identity
SqlPackage /Action:Publish /SourceFile:"C:\AdventureWorksLT.dacpac" \
    /TargetConnectionString:"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 publish connecting using Microsoft Entra username and password
SqlPackage /Action:Publish /SourceFile:"C:\AdventureWorksLT.dacpac" \
    /TargetConnectionString:"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 publish connecting using Microsoft Entra universal authentication
SqlPackage /Action:Publish /SourceFile:"C:\AdventureWorksLT.dacpac" /UniversalAuthentication:True \
    /TargetConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

# example publish with 2 SQLCMD variables
# as seen in a post deployment script for user passwords
# https://github.com/Azure-Samples/app-sql-devops-demo-project/blob/main/sql/wwi-dw-ssdt/PostDeploymentScripts/AddUsers.sql
SqlPackage /Action:Publish /SourceFile:"C:\AdventureWorksLT.dacpac" \
    /TargetConnectionString:"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;" \
    /v:ETLUserPassword="asecurestringaddedhere" /v:AppUserPassword="asecurestringaddedhere"
# example publish connecting using an access token associated with a service principal
$Account = Connect-AzAccount -ServicePrincipal -Tenant $Tenant -Credential $Credential
$AccessToken_Object = (Get-AzAccessToken -Account $Account -Resource "https://database.windows.net/")
$AccessToken = $AccessToken_Object.Token

SqlPackage /at:$AccessToken /Action:Publish /SourceFile:"C:\AdventureWorksLT.dacpac" \
    /TargetConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
# OR
SqlPackage /at:$($AccessToken_Object.Token) /Action:Publish /SourceFile:"C:\AdventureWorksLT.dacpac" \
    /TargetConnectionString:"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}"。
/AzureKeyVaultAuthMethod: /akv: {Interactive|ClientIdSecret} 指定在发布操作包含对已加密表/列的修改的情况下,使用哪种身份验证方法来访问 Azure KeyVault。
/ClientId: /cid: {string} 必要时,指定在对 Azure KeyVault 进行身份验证时使用的客户端 ID
/DeployReportPath: /drp: {string} 指定用于输出部署报告 xml 文件的可选文件路径。
/DeployScriptPath: /dsp: {string} 指定用于输出部署脚本的可选文件路径。 对于 Azure 部署,如果有用于创建或修改 master 数据库的 Transact-SQL 命令,脚本便会写入相同路径,不同之处在于使用“Filename_Master.sql”作为输出文件名。
/Diagnostics: /d: {True|False} 指定诊断日志记录是否输出到控制台。 默认为 False。
/DiagnosticsFile: /df: {string} 指定一个用于存储诊断日志的文件。
/MaxParallelism: /mp: {int} 指定针对数据库运行的并发操作的并行度。 默认值为 8。
/ModelFilePath: /mfp: {string} 指定在源文件中重写 model.xml 的文件路径。 使用此设置可能会导致部署失败和/或意外的数据丢失。 此设置仅供解决发布、导入或脚本生成问题时使用。
/OverwriteFiles: /of: {True|False} 指定 SqlPackage 是否应覆盖现有文件。 指定 false 会导致 SqlPackage 在遇到现有文件时中断操作。 默认值为 True。
/Profile: /pr: {string} 指定 DAC 发布配置文件的文件路径。 该配置文件定义在生成输出时要使用的属性和变量的集合。
/Properties: /p: {PropertyName}={Value} 特定于操作的属性指定名称值对;{PropertyName}={Value}。
/Quiet: /q: {True|False} 指定是否隐藏详细反馈。 默认为 False。
/ReferencePaths: /rp: {PropertyName}={Value} 指定用于搜索 .dacpac 引用的其他目录。
/Secret: /secr: {string} 必要时,指定在对 Azure KeyVault 进行身份验证时使用的客户端密码
/SourceFile: /sf: {string} 指定要用作操作源而非来自本地存储的数据库的源文件。 如果使用此参数,则其他源参数应无效。
/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 用户。
/TargetConnectionString: /tcs: {string} 指定目标数据库的有效 SQL Server/Azure 连接字符串。 如果指定了此参数,则应该独立于所有其他目标参数来使用此参数。
/TargetDatabaseName: /tdn: {string} 指定作为 SqlPackage 操作目标的数据库的名称替代。
/TargetEncryptConnection: /tec: {Optional|Mandatory|Strict|True|False} 指定是否应将 SQL 加密用于目标数据库连接。 默认值为 True。
/TargetHostNameInCertificate: /thnic: {string} 指定在使用 TLS 加密通信层时用于验证目标 SQL Server TLS/SSL 证书的值。
/TargetPassword: /tp: {string} 对于 SQL Server 身份验证方案,定义要用于访问目标数据库的密码。
/TargetServerName: /tsn: {string} 定义承载目标数据库的服务器的名称。
/TargetTimeout: /tt: {int} 指定建立与目标数据库的连接的超时时间(以秒为单位)。 对于 Microsoft Entra ID,建议此值大于或等于 30 秒。
/TargetTrustServerCertificate: /ttsc: {True|False} 指定是否使用 TLS 对目标数据库连接进行加密,并绕过证书链来验证信任。 默认值为 False。
/TargetUser: /tu: {string} 对于 SQL Server 身份验证方案,定义要用于访问目标数据库的 SQL Server 用户。
/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 身份验证。
有关 Active Directory 通用身份验证的详细信息,请参阅 SQL 数据库和 Azure Synapse Analytics 的通用身份验证(对 MFA 的 SSMS 支持)
/Variables: /v: {PropertyName}={Value} 为特定于操作的变量指定名称值对;{VariableName}={Value}。 该 DACPAC 文件包含有效 SQLCMD 变量的列表。 如果没有为每个变量都提供值,则会发生错误。

特定于 Publish 操作的属性

properties 价值 说明
/p: AdditionalDeploymentContributorArguments=(STRING) 为部署参与者指定其他部署参与者参数。 此属性应该是用分号分隔的值列表。
/p: AdditionalDeploymentContributorPaths=(STRING) 指定用于加载其他部署参与者的路径。 此属性应该是用分号分隔的值列表。
/p: AdditionalDeploymentContributors=(STRING) 指定应在部署 dacpac 时运行的其他部署参与者。 此属性应该是以分号分隔的完全限定的生成参与者名称或 ID 列表。
/p: AllowDropBlockingAssemblies=(BOOLEAN 'False') SqlClr 部署使用此属性以导致阻塞程序集作为部署计划的组成部分被删除。 默认情况下,如果需要删除引用程序集,则任何阻塞或引用程序集将阻止程序集更新。
/p: AllowExternalLanguagePaths=(BOOLEAN 'False') 允许将文件路径(若有)用于生成外部语言语句。
/p: AllowExternalLibraryPaths=(BOOLEAN 'False') 允许文件路径(若有)用于生成外部库语句。
/p: AllowIncompatiblePlatform=(BOOLEAN 'False') 指定是否尝试操作,而不管存在的不兼容 SQL Server 平台。
/p: AllowTableRecreation=(BOOLEAN 'True') 指定在部署期间是否允许重新创建表(如果需要)以便执行架构更改。 重新创建表在保留数据的同时重新生成表,但可能会对性能产生重大影响。
/p: AllowUnsafeRowLevelSecurityDataMovement=(BOOLEAN 'False') 如果此属性设置为 true,则不阻止具有行级别安全性的表上的数据运动。 默认值为 false。
/p: AzureSharedAccessSignatureToken=(STRING) Azure 共享访问签名 (SAS) 令牌。 请参阅 SqlPackage for Azure Synapse Analytics带有 Parquet 文件中数据的 SqlPackage
/p: AzureStorageBlobEndpoint=(STRING) Azure Blob 存储终结点,请参阅 SqlPackage for Azure Synapse Analytics带有 Parquet 文件中数据的 SqlPackage
/p: AzureStorageContainer=(STRING) Azure Blob 存储容器,请参阅 SqlPackage for Azure Synapse Analytics带有 Parquet 文件中数据的 SqlPackage
/p: AzureStorageKey=(STRING) Azure 存储帐户密钥,请参阅 SqlPackage for Azure Synapse Analytics带有 Parquet 文件中数据的 SqlPackage
/p: AzureStorageRootPath=(STRING) 容器中的存储根路径。 如果没有此属性,路径将默认为 servername/databasename/timestamp/。 请参阅 SqlPackage for Azure Synapse Analytics带有 Parquet 文件中数据的 SqlPackage
/p: BackupDatabaseBeforeChanges=(BOOLEAN 'False') 在部署任何更改之前,备份数据库。 此属性不适用于 Azure SQL 数据库。
/p: BlockOnPossibleDataLoss=(BOOLEAN 'True') 指定在产生的架构更改可能会导致数据丢失(包括由于数据精度降低,或由于需要强制转换操作的数据类型更改)的情况下,将在架构验证步骤期间终止操作。 默认值 (True) 会导致操作终止,而无论目标数据库是否包含数据。 如果目标中存在无法转换为新列类型的数据,则将 False 设为 BlockOnPossibleDataLoss 的值来执行操作仍可能会在执行部署计划期间失败。
/p: BlockWhenDriftDetected=(BOOLEAN 'True') 指定是否阻止更新其架构与其注册不再匹配或已取消注册的数据库。
/p: CommandTimeout=(INT32 '60') 指定针对 SQL Server 执行查询时的命令超时(以秒为单位)。
/p: CommentOutSetVarDeclarations=(BOOLEAN 'False') 指定是否应在生成的发布脚本中注释掉 SETVAR 变量的声明。 如果您打算在发布时使用 SQLCMD.EXE 等工具指定命令行上的值,则可以选择这样做。
/p: CompareUsingTargetCollation=(BOOLEAN 'False') 此设置指示在部署过程中如何处理数据库的排序规则;默认情况下,如果目标数据库的排序规则与源所指定的排序规则不匹配,就将更新目标数据库的排序规则。 设置此选项后,应使用目标数据库(或服务器)的排序规则。
/p: CreateNewDatabase=(BOOLEAN 'False') 指定当您发布到数据库时,是否应更新目标数据库或是否应删除并重新创建目标数据库。
/p: DatabaseEdition=({ Basic | Standard | Premium | DataWarehouse | GeneralPurpose | BusinessCritical | Hyperscale | Default } 'Default') 定义 Azure SQL 数据库的版本。 请参阅 Azure SQL 数据库服务层级
/p: DatabaseLockTimeout=(INT32 '60') 指定针对 SQLServer 执行查询时的数据库锁超时(以秒为单位)。 使用 -1 表示无限期等待。
/p: DatabaseMaximumSize=(INT32 '0') 定义 Azure SQL 数据库的大小上限(以 GB 为单位)。
/p: DatabaseServiceObjective=(STRING) 定义 Azure SQL 数据库的性能级别,如“P0”或“S1”。
/p: DeployDatabaseInSingleUserMode=(BOOLEAN 'False') 如果为 true,则数据库在部署前将设置为单用户模式。
/p: DisableAndReenableDdlTriggers=(BOOLEAN 'True') 指定在发布过程开始时是否禁用数据定义语言 (DDL) 触发器,以及在发布操作结束时是否重新启用此类触发器。
/p: DisableIndexesForDataPhase=(BOOLEAN 'True') 在将数据导入 SQL Server 之前禁用索引。
/p: DisableParallelismForEnablingIndexes=(BOOLEAN 'False') 将数据导入 SQL Server 时,在重新生成索引时不使用平行度。
/p: DoNotAlterChangeDataCaptureObjects=(BOOLEAN 'True') 如果为 true,则不更改变更数据捕获对象。
/p: DoNotAlterReplicatedObjects=(BOOLEAN 'True') 指定是否在验证过程中标识重复的对象。
/p: DoNotDropDatabaseWorkloadGroups=(BOOLEAN 'False') 如果为 false,目标数据库中没有在源中定义的数据库工作负载组将在部署期间被删除。
/p: DoNotDropObjectType=(STRING) 当 DropObjectsNotInSource 为 True 时不应删除的对象类型。 有效的对象类型名称为 Aggregates、ApplicationRoles、Assemblies、AssemblyFiles、AsymmetricKeys、BrokerPriorities、Certificates、ColumnEncryptionKeys、ColumnMasterKeys、Contracts、DatabaseOptions、DatabaseRoles、DatabaseTriggers、Defaults、ExtendedProperties、ExternalDataSources、ExternalFileFormats、ExternalTables、Filegroups、Files、FileTables、FullTextCatalogs、FullTextStoplists、MessageTypes、PartitionFunctions、PartitionSchemes、Permissions、Queues、RemoteServiceBindings、RoleMembership、Rules、ScalarValuedFunctions、SearchPropertyLists、SecurityPolicies、Sequences、Services、Signatures、StoredProcedures、SymmetricKeys、Synonyms、Tables、TableValuedFunctions、UserDefinedDataTypes、UserDefinedTableTypes、ClrUserDefinedTypes、Users、Views、XmlSchemaCollections、Audits、Credentials、CryptographicProviders、DatabaseAuditSpecifications、DatabaseEncryptionKeys、DatabaseScopedCredentials、Endpoints、ErrorMessages、EventNotifications、EventSessions、LinkedServerLogins、LinkedServers、Logins、MasterKeys、Routes、ServerAuditSpecifications、ServerRoleMembership、ServerRoles、ServerTriggers、ExternalStreams、ExternalStreamingJobs、DatabaseWorkloadGroups、WorkloadClassifiers、ExternalLibraries、ExternalLanguages。 可以多次指定此属性以指示多个选项。
/p: DoNotDropObjectTypes=(STRING) 当 DropObjectsNotInSource 为 True 时不应删除的以分号分隔的对象类型列表。 有效的对象类型名称为 Aggregates、ApplicationRoles、Assemblies、AssemblyFiles、AsymmetricKeys、BrokerPriorities、Certificates、ColumnEncryptionKeys、ColumnMasterKeys、Contracts、DatabaseOptions、DatabaseRoles、DatabaseTriggers、Defaults、ExtendedProperties、ExternalDataSources、ExternalFileFormats、ExternalTables、Filegroups、Files、FileTables、FullTextCatalogs、FullTextStoplists、MessageTypes、PartitionFunctions、PartitionSchemes、Permissions、Queues、RemoteServiceBindings、RoleMembership、Rules、ScalarValuedFunctions、SearchPropertyLists、SecurityPolicies、Sequences、Services、Signatures、StoredProcedures、SymmetricKeys、Synonyms、Tables、TableValuedFunctions、UserDefinedDataTypes、UserDefinedTableTypes、ClrUserDefinedTypes、Users、Views、XmlSchemaCollections、Audits、Credentials、CryptographicProviders、DatabaseAuditSpecifications、DatabaseEncryptionKeys、DatabaseScopedCredentials、Endpoints、ErrorMessages、EventNotifications、EventSessions、LinkedServerLogins、LinkedServers、Logins、MasterKeys、Routes、ServerAuditSpecifications、ServerRoleMembership、ServerRoles、ServerTriggers、ExternalStreams、ExternalStreamingJobs、DatabaseWorkloadGroups、WorkloadClassifiers、ExternalLibraries、ExternalLanguages。
/p: DoNotDropWorkloadClassifiers=(BOOLEAN 'False') 如果为 false,目标数据库中没有在源中定义的工作负载分类器将在部署期间被删除。
/p: DoNotEvaluateSqlCmdVariables=(BOOLEAN 'True') 指定是否不用值来替换 SQLCMD 变量
/p: DropConstraintsNotInSource=(BOOLEAN 'True') 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的约束。
/p: DropDmlTriggersNotInSource=(BOOLEAN 'True') 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的 DML 触发器。
/p: DropExtendedPropertiesNotInSource=(BOOLEAN 'True') 指定在发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的扩展属性。
/p: DropIndexesNotInSource=(BOOLEAN 'True') 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的索引。
/p: DropObjectsNotInSource=(BOOLEAN 'False') 指定当你发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的对象。 此值优先于 DropExtendedProperties。
/p: DropPermissionsNotInSource=(BOOLEAN 'False') 指定当您更新到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的权限。
/p: DropRoleMembersNotInSource=(BOOLEAN 'False') 指定当您更新到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中未定义的角色成员。
/p: DropStatisticsNotInSource=(BOOLEAN 'True') 指定在发布到数据库时是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的统计信息。
/p: EnclaveAttestationProtocol=(STRING) 指定要与基于 enclave 的 Always Encrypted 一起使用的证明协议。
/p: EnclaveAttestationUrl=(STRING) 指定要与基于 enclave 的 Always Encrypted 一起使用的 enclave 证明 URL(证明服务终结点)。
/p: ExcludeObjectType=(STRING) 应在部署期间忽略的对象类型。 有效的对象类型名称为 Aggregates、ApplicationRoles、Assemblies、AssemblyFiles、AsymmetricKeys、BrokerPriorities、Certificates、ColumnEncryptionKeys、ColumnMasterKeys、Contracts、DatabaseOptions、DatabaseRoles、DatabaseTriggers、Defaults、ExtendedProperties、ExternalDataSources、ExternalFileFormats、ExternalTables、Filegroups、Files、FileTables、FullTextCatalogs、FullTextStoplists、MessageTypes、PartitionFunctions、PartitionSchemes、Permissions、Queues、RemoteServiceBindings、RoleMembership、Rules、ScalarValuedFunctions、SearchPropertyLists、SecurityPolicies、Sequences、Services、Signatures、StoredProcedures、SymmetricKeys、Synonyms、Tables、TableValuedFunctions、UserDefinedDataTypes、UserDefinedTableTypes、ClrUserDefinedTypes、Users、Views、XmlSchemaCollections、Audits、Credentials、CryptographicProviders、DatabaseAuditSpecifications、DatabaseEncryptionKeys、DatabaseScopedCredentials、Endpoints、ErrorMessages、EventNotifications、EventSessions、LinkedServerLogins、LinkedServers、Logins、MasterKeys、Routes、ServerAuditSpecifications、ServerRoleMembership、ServerRoles、ServerTriggers、ExternalStreams、ExternalStreamingJobs、DatabaseWorkloadGroups、WorkloadClassifiers、ExternalLibraries、ExternalLanguages。 可以多次指定此属性以指示多个选项。
/p: ExcludeObjectTypes=(STRING) 应在部署期间忽略的以分号分隔的对象类型列表。 有效的对象类型名称为 Aggregates、ApplicationRoles、Assemblies、AssemblyFiles、AsymmetricKeys、BrokerPriorities、Certificates、ColumnEncryptionKeys、ColumnMasterKeys、Contracts、DatabaseOptions、DatabaseRoles、DatabaseTriggers、Defaults、ExtendedProperties、ExternalDataSources、ExternalFileFormats、ExternalTables、Filegroups、Files、FileTables、FullTextCatalogs、FullTextStoplists、MessageTypes、PartitionFunctions、PartitionSchemes、Permissions、Queues、RemoteServiceBindings、RoleMembership、Rules、ScalarValuedFunctions、SearchPropertyLists、SecurityPolicies、Sequences、Services、Signatures、StoredProcedures、SymmetricKeys、Synonyms、Tables、TableValuedFunctions、UserDefinedDataTypes、UserDefinedTableTypes、ClrUserDefinedTypes、Users、Views、XmlSchemaCollections、Audits、Credentials、CryptographicProviders、DatabaseAuditSpecifications、DatabaseEncryptionKeys、DatabaseScopedCredentials、Endpoints、ErrorMessages、EventNotifications、EventSessions、LinkedServerLogins、LinkedServers、Logins、MasterKeys、Routes、ServerAuditSpecifications、ServerRoleMembership、ServerRoles、ServerTriggers、ExternalStreams、ExternalStreamingJobs、DatabaseWorkloadGroups、WorkloadClassifiers、ExternalLibraries、ExternalLanguages。
/p: GenerateSmartDefaults=(BOOLEAN 'False') 在使用一个不允许 Null 值的列更新一个包含数据的表时,自动提供默认值。
/p: HashObjectNamesInLogs=(BOOLEAN 'False') 指定是否用随机哈希值替换日志中的所有对象名称。
/p: IgnoreAnsiNulls=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略还是应更新 ANSI NULLS 设置方面的差异。
/p: IgnoreAuthorizer=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新授权者方面的差异。
/p: IgnoreColumnCollation=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新列排序规则方面的差异。
/p: IgnoreColumnOrder=(BOOLEAN 'False') 指定在发布到数据库时是否应忽略或更新表列顺序中的差异。
/p: IgnoreComments=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新注释方面的差异。
/p: IgnoreCryptographicProviderFilePath=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略还是应更新加密提供程序的文件路径方面的差异。
/p: IgnoreDatabaseWorkloadGroups=(BOOLEAN 'False') 指定是否在部署过程中排除目标上存在的工作负荷组。 不会添加、修改或删除任何数据库工作负载组。
/p: IgnoreDdlTriggerOrder=(BOOLEAN 'False') 指定在发布到数据库或服务器时,是应忽略还是更新数据定义语言 (DDL) 触发器中的顺序差异。
/p: IgnoreDdlTriggerState=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新数据定义语言 (DDL) 触发器的启用状态或禁用状态方面的差异。
/p: IgnoreDefaultSchema=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新默认架构方面的差异。
/p: IgnoreDmlTriggerOrder=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是更新数据操作语言 (DML) 触发器中的顺序差异。
/p: IgnoreDmlTriggerState=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新 DML 触发器的启用状态或禁用状态方面的差异。
/p: IgnoreExtendedProperties=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新扩展属性方面的差异。
/p: IgnoreFileAndLogFilePath=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略还是应更新文件和日志文件路径方面的差异。
/p: IgnoreFilegroupPlacement=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略还是应更新 FILEGROUP 中的对象位置方面的差异。
/p: IgnoreFileSize=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略文件的大小差异,还是应发出警告。
/p: IgnoreFillFactor=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略索引存储的填充因子方面的差异,还是应发出警告。
/p: IgnoreFullTextCatalogFilePath=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略全文目录的文件路径方面的差异,还是应发出警告。
/p: IgnoreIdentitySeed=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新标识列种子方面的差异。
/p: IgnoreIncrement=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新标识列增量方面的差异。
/p: IgnoreIndexOptions=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新索引选项方面的差异。
/p: IgnoreIndexPadding=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略还是应更新索引填充方面的差异。
/p: IgnoreKeywordCasing=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略还是应更新关键字的大小写方面的差异。
/p: IgnoreLockHintsOnIndexes=(BOOLEAN 'False') 指定当您发布到数据库时,应忽略还是更新索引上的锁提示之间的差异。
/p: IgnoreLoginSids=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略还是应更新安全标识号 (SID) 方面的差异。
/p: IgnoreNotForReplication=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新不用于复制设置。
/p: IgnoreObjectPlacementOnPartitionScheme=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略还是应更新对象在分区方案中的位置。
/p: IgnorePartitionSchemes=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新分区方案和分区函数方面的差异。
/p: IgnorePermissions=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新权限方面的差异。
/p: IgnoreQuotedIdentifiers=(BOOLEAN 'True') 指定在发布到数据库时,是应忽略还是应更新带引号的标识符设置方面的差异。
/p: IgnoreRoleMembership=(BOOLEAN 'False') 指定当您发布到数据库时,应忽略还是更新登录的角色成员身份之间的差异。
/p: IgnoreRouteLifetime=(BOOLEAN 'True') 指定在发布到数据库时,应忽略还是应更新 SQL Server 保留路由表中的路由的时间量方面的差异。
/p: IgnoreSemicolonBetweenStatements=(BOOLEAN 'True') 指定在发布到数据库时,是将忽略还是将更新 T-SQL 语句之间的分号差异。
/p: IgnoreSensitivityClassifications=(BOOLEAN 'False') 指定在比较架构模型时是否应忽略列上的数据敏感性分类。 这仅适用于使用 SQL 2019 中引入的 ADD SENSITIVITY CLASSIFICATION 语法添加的分类。
/p: IgnoreTableOptions=(BOOLEAN 'False') 指定在发布到数据库时,是将忽略还是将更新表选项方面的差异。
/p: IgnoreTablePartitionOptions=(BOOLEAN 'False') 指定在发布到数据库时,是将忽略还是将更新表分区选项方面的差异。 此选项仅适用于 Azure Synapse Analytics 专用 SQL 池数据库。
/p: IgnoreUserSettingsObjects=(BOOLEAN 'False') 指定在发布到数据库时,是将忽略还是将更新用户设置对象方面的差异。
/p: IgnoreWhitespace=(BOOLEAN 'True') 指定在发布到数据库时,是将忽略还是将更新空白方面的差异。
/p: IgnoreWithNocheckOnCheckConstraints=(BOOLEAN 'False') 指定在进行发布时,是将忽略还是将更新 CHECK 约束的 WITH NOCHECK 子句值方面的差异。
/p: IgnoreWithNocheckOnForeignKeys=(BOOLEAN 'False') 指定在发布到数据库时,是将忽略还是将更新外键的 WITH NOCHECK 子句值方面的差异。
/p: IgnoreWorkloadClassifiers=(BOOLEAN 'False') 指定是否在部署过程中排除目标上存在的工作负荷分类器。
/p: IncludeCompositeObjects=(BOOLEAN 'False') 作为单个发布操作的一部分,将具有相同数据库的所有复合元素包含在内。
/p: IncludeTransactionalScripts=(BOOLEAN 'False') 指定在发布到数据库时,是否应在可能的位置使用事务性语句。
/p: IsAlwaysEncryptedParameterizationEnabled=(BOOLEAN 'False') 对部署前/部署后脚本中的 Always Encrypted 列启用变量参数化。
/p: LongRunningCommandTimeout=(INT32 '0') 指定针对 SQL Server 执行查询时的长时间运行命令超时(以秒为单位)。 使用 0 表示无限期等待。
/p: NoAlterStatementsToChangeClrTypes=(BOOLEAN 'False') 指定发布操作在存在差异时应始终删除并重新创建程序集,而不是发出 ALTER ASSEMBLY 语句。
/p: PerformIndexOperationsOnline=(BOOLEAN 'False') 指定是否在部署期间在线执行索引操作。
/p: PopulateFilesOnFileGroups=(BOOLEAN 'True') 指定当在目标数据库中创建新 FileGroup 时,是否也创建新文件。
/p: PreserveIdentityLastValues=(BOOLEAN 'False') 指定在部署期间是否应保留标识列的最后值。
/p: RebuildIndexesOfflineForDataPhase=(BOOLEAN 'False') 在导入数据后脱机重新生成索引。
/p: RegisterDataTierApplication=(BOOLEAN 'False') 指定是否向数据库服务器注册该架构。
/p: RestoreSequenceCurrentValue=(BOOLEAN 'True') 指定序列对象当前值是否应与 dacpac 文件一起部署,默认值为 True。
/p: RunDeploymentPlanExecutors=(BOOLEAN 'False') 指定是否应在执行其他操作时运行 DeploymentPlanExecutor 参与者。
/p: ScriptDatabaseCollation=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新数据库排序规则方面的差异。
/p: ScriptDatabaseCompatibility=(BOOLEAN 'False') 指定在发布到数据库时,是应忽略还是应更新数据库兼容性方面的差异。
/p: ScriptDatabaseOptions=(BOOLEAN 'True') 指定是否应作为发布操作的一部分来设置或更新目标数据库属性。
/p: ScriptDeployStateChecks=(BOOLEAN 'False') 指定是否在发布脚本中生成声明,以验证数据库名称和服务器名称是否与数据库项目中指定的名称匹配。
/p: ScriptFileSize=(BOOLEAN 'False') 控制在向文件组添加文件时是否指定大小。
/p: ScriptNewConstraintValidation=(BOOLEAN 'True') 在发布结束时将所有约束作为一个集合进行验证,从而避免 CHECK 约束或外键约束在发布过程中导致数据错误。 如果设置为“False”,则将发布约束而不检查对应的数据。
/p: ScriptRefreshModule=(BOOLEAN 'True') 在发布脚本的末尾包括刷新语句。
/p: Storage=({File|Memory}) 指定在生成数据库模型时如何存储元素。 出于性能原因,默认值为 InMemory。 对于大型数据库,文件支持的存储可能是必需的,并且仅适用于 SqlPackage 的 .NET Framework 版本。
/p: TreatVerificationErrorsAsWarnings=(BOOLEAN 'False') 指定是否应将发布验证过程中遇到的错误视为警告。 在对目标数据库执行生成的部署计划之前,会先对该计划执行检查。 计划验证将检测仅有目标的对象(如索引)丢失等问题,必须解决这些问题以进行更改。 验证还检测以下情况:依赖项(如表或视图)因对复合项目的引用而存在,但未存在于目标数据库中。 可以选择执行此操作以获取所有问题的完整列表,而不是在出现第一个错误时停止发布操作。
/p: UnmodifiableObjectWarnings=(BOOLEAN 'True') 指定在无法修改的对象中发现差异(例如,如果文件的大小或路径存在差异)时是否生成警告。
/p: VerifyCollationCompatibility=(BOOLEAN 'True') 指定是否验证排序规则兼容性。
/p: VerifyDeployment=(BOOLEAN 'True') 指定在出现可能阻止成功发布的问题的情况下,是否应在发布前执行将停止发布操作的检查。 例如,如果具有在数据库项目中不存在的目标数据库上的外键并且在发布时导致错误,则发布操作可能会停止。

SQLCMD 变量

下表介绍可用于重写发布操作过程中使用的 SQL 命令 (sqlcmd) 变量的值的选项的格式 。 命令行上指定的变量的值将重写分配给变量(例如,在发布配置文件中)的其他值。

参数 默认 说明
/v:{PropertyName}={Value} 为特定于操作的变量指定名称值对;{VariableName}={Value}。 该 DACPAC 文件包含有效 SQLCMD 变量的列表。 如果没有为每个变量都提供值,则会发生错误。

后续步骤