SqlPackage.exe
SqlPackage.exe 是一个命令行实用工具,可自动完成以下数据库开发任务:
提取:从活动的 SQL Server 或 Windows Azure SQL Database 创建数据库快照 (.dacpac) 文件。
导出:将活动数据库(包括数据库架构和用户数据)从 SQL Server 或 Windows Azure SQL Database 导出到 BACPAC 包(.bacpac 文件)。
导入:将架构和表数据从 BACPAC 包导入到 SQL Server 或 Windows Azure SQL Database 的实例中的新用户数据库中。
发布:以增量方式更新数据库架构以匹配源 .dacpac 文件的架构。如果数据库不存在于服务器上,则发布操作将创建该数据库。否则,将更新现有数据库。
DeployReport:创建将由发布操作完成的更改的 XML 报表。
DriftReport:创建自注册数据库注册以来已对其做出的更改的 XML 报表。
脚本:创建 Transact-SQL 增量更新脚本,该脚本可更新目标的架构以匹配源的架构。
通过 SqlPackage.exe 命令行,您可以指定这些操作以及特定于操作的参数和属性。
命令行语法
SqlPackage.exe 使用在命令行上指定的参数、属性和 SQLCMD 变量启动指定的操作。
SqlPackage {parameters}{properties}{SQLCMDVariables}
若要查看 Windows Azure SQL Database、SQL Server Data Tools 和 SQL Server Management Studio 的常见客户问题的解决方案,请参阅数据库生命周期管理。
一般参数
一般参数可影响 SqlPackage.exe 的整体操作。
参数 | 缩写形式 | 是否必需? | 说明 |
---|---|---|---|
/Help | /? | N | 显示用法语句。 |
/Action:{Extract | DeployReport | DriftReport | Publish | Script | Export | Import | Pipe} | /a:{Extract | DeployReport | DriftReport | Publish | Script | Export | Import | Pipe} | Y | 指定要执行的操作。 |
/Quiet:{True | False} | /q:{True | False} | N | 指定是否隐藏详细反馈。默认为 False。 |
/OverwriteFiles:{True | False} | /of:{True | False} | N | 指定 sqlpackage.exe 是否应覆盖现有文件。指定 False 会导致 sqlpackage.exe 在遇到现有文件时中断操作。默认值为 True。 |
@{file-path} | 无 | N | 指定响应文件的文件路径。 |
源参数
下表显示了 SqlPackage.exe 支持的用于定义源的命令行参数:
参数 | 缩写形式 | 默认 | 说明 |
---|---|---|---|
/SourceConnectionString:{string} | /scs:{string} | N/A | 指定源数据库的有效 SQL Server/Azure 连接字符串。如果指定了此参数,则应该独立于所有其他源参数来使用此参数。 |
/SourceDatabaseName:{string} | /sdn:{string} | N/A | 定义源数据库的名称。 |
/SourceUser:{value} | /su:{value} | N/A | 对于 SQL Server 创作方案,指定用于获取对数据库的访问权的 SQL Server 用户。 |
/SourceEncryptConnection:{True|False} | /sec:{ True | False} | False | 指定是否应该将 SQL 加密用于源数据库连接。 |
/SourceFile: { string } | /sf:{ string } | N/A | 指定要用作操作源而非数据库的源文件。如果使用此参数,则其他源参数应无效。 |
/SourcePassword:{string} | /sp:{string} | N/A | 对于 SQL Server 创作方案,定义要用于访问源数据库的密码。 |
/SourceServerName: {string} | /ssn:{ string } | N/A | 指定承载数据库的服务器的名称。 |
/SourceTimeout:{string} | /st:{string} | 15 | 指定在建立与源数据库的连接时的超时(以秒为单位)。 |
/SourceTrustServerCertificate:{True | False} | /stsc:{True | False} | False | 指定是否使用安全套接字层 (SSL) 来对源数据库连接进行加密并跳过证书链以验证信任。 |
/SourceUser:{string} | /su:{string} | N/A | 对于 SQL Server 创作方案,指定用于获取对数据库的访问权的 SQL Server 用户。 |
目标参数
下表显示了 SqlPackage.exe 支持的用于定义目标的命令行参数:
参数 | 缩写形式 | 是否必需? | 说明 |
---|---|---|---|
/TargetConnectionString{string} | /tcs:{string} | N/A | 指定目标数据库的有效 SQL Server 或 SQL Azure 连接字符串。如果在命令行上出现此参数,则将独立于其他目标参数使用连接字符串。 |
/TargetDatabaseName:{string} | /tdn:{string} | N/A | 指定目标数据库的名称。 |
/TargetEncryptConnection: {True | False} | /tec:{True | False} | False | 指定是否对目标数据库使用 SQL 加密。 |
/TargetFile:{string} | /tf:{string} | N/A | 指定 .dacpac 文件将被写入的磁盘文件路径。 |
/TargetPassword:{ string } | /tp:{ string } | N/A | 对于 SQL Server 创作方案,指定用于获取对目标数据库的访问权的密码。 |
/TargetServerName:{ string } | /ssn:{ string } | N/A | 指定承载目标数据库的服务器的名称。 |
/TargetTimeout:{ string } | /tt:{ string } | 15 | 指定在建立与目标数据库的连接时的超时(以秒为单位)。 |
/TargetTrustServerCertificate:{True | False} | /ttsc:{True | False} | False | 指定是否使用安全套接字层 (SSL) 来对目标数据库连接进行加密并跳过证书链以验证信任。 |
/TargetUser:{ string } | /tu:{ string } | N/A | 对于 SQL Server 创作方案,指定用于获取对目标数据库的访问权的 SQL Server 用户。 |
提取参数和属性
SqlPackage.exe 提取操作会从 SQL Server 的本地实例或 Windows Azure SQL Database 实例中的活动数据库创建一个数据库快照(采用 .dacpac 文件的格式)。提取操作可以创建一个 .dacpac 文件,该文件只包含源数据库的架构,或者包含该架构和用户表数据。
参数
源:所有 源参数 都对提取有效,/SourceFile: 除外。
**目标:**在您使用 SqlPackage.exe 指定提取操作时,只有以下目标参数可用:
参数 | 缩写形式 | 是否必需? | 说明 |
---|---|---|---|
/TargetFile:{string} | /tf:{string} | Y | 指定 .dacpac 文件将被写入的磁盘文件路径。 |
属性
属性 | 默认 | 说明 |
---|---|---|
/p:CommandTimeout = {Integer} | 60 | 指定针对 SQL Server 执行查询时的命令超时(以秒为单位)。 |
/p:DacApplicationDescription={ string } | N/A | 定义要在 DACPAC 元数据中存储的应用程序说明。 |
/p:DacApplicationName={ string } | N/A | 定义要在 DACPAC 元数据中存储的应用程序名称。默认值为数据库名称。 |
/p:DacMajorVersion={integer} | 1 | 定义要在 DACPAC 元数据中存储的主版本。 |
/p:DacMinorVersion={integer} | 0 | 如果为 true,则只为指定的源提取应用程序范围的对象。如果为 false,则为指定的源提取所有对象。 |
/p:ExtractAllTableData={true | false} | False | 如果为 true,则创建一个 .dacpac 文件,该文件包含数据库架构和所有用户表中的数据。 |
/p:ExtractApplicationScopedObjectsOnly={True | False} | True | 如果为 true,则只为指定的源提取应用程序范围的对象。如果为 false,则为指定的源提取所有对象。 |
/p:ExtractReferencedServerScopedElements={True| False} | True | 如果为 true,则提取源数据库对象所引用的登录对象、服务器审核对象和凭据对象。 |
/p:IgnoreExtendedProperties={True | False} | False | 指定是否应忽略扩展属性。 |
/p:IgnorePermissions={True | False} | True | 指定是否应忽略权限。 |
/p:IgnoreUserLoginMappings={True | False} | False | 指定是否应忽略用户和登录名之间的关系。 |
/p:Storage={File|Memory} | File | 指定在提取过程中使用的架构模型的后备存储的类型。 |
/p:TableData={string} | N/A | 此属性用于指定要包含为提取操作一部分的个别用户表。使用由两个部分组成的表名称指定表。 |
/p:VerifyExtraction={True | False} | False | 指定是否应验证提取的 dacpac。 |
**注意:**在执行提取操作时,通过设置 /p:ExtractAllTableData=true,还会禁止你使用 /p:TableData 属性指定个别表。设置 /p:ExtractAllTableData=false 以指定要从中提取数据的一个或多个用户表。
发布参数、属性和 SQLCMD 变量
SqlPackage.exe 发布操作增量更新目标数据库的架构以便匹配源数据库的结构。通过发布包含所有表或表子集的部署包,除了架构外还将更新表数据。请注意,数据部署将覆盖目标数据库的现有表中的架构和数据。对于未包含在部署包中的表,数据部署将不会更改目标数据库中的现有架构或数据。
参数
**源:**只有 /SourceFile: 参数对发布有效。
**目标:**所有 目标参数 都对发布有效,TargetFile 除外。
当您使用 SqlPackage.exe 指定发布操作时,以下目标参数可用:
参数 | 缩写形式 | 是否必需? | 说明 |
---|---|---|---|
/Profile:{string} | /pr:{string} | N/A | 指定 DAC 发布配置文件的文件路径。该配置文件定义在生成输出时要使用的属性和变量的集合。 |
/Properties:{PropertyName}={Value} | /p:{PropertyName}={Value} | N/A | 为特定于操作的属性指定名称值对;{PropertyName}={Value}。请参考特定操作的帮助以便查看该操作的属性名称。 |
**注意:**你可以发布带有表数据的部署包,而无需指定任何其他语法或约束。
属性
属性 | 默认 | 说明 |
---|---|---|
/p:AdditionalDeploymentContributorArguments={string} | N/A | 为部署参与者指定其他部署参与者参数。这应该是用分号分隔的值列表。 |
/p:AdditionalDeploymentContributors={string} | N/A | 指定应在部署 dacpac 时运行的其他部署参与者。这应该是以分号分隔的完全限定的生成参与者名称或 ID 列表。 |
/p:AllowDropBlockingAssemblies ={True | False} | False | 指定 SqlClr 发布是否删除作为部署计划的一部分的阻塞程序集。默认情况下,如果必须删除引用程序集,则任何阻塞或引用程序集将阻止程序集更新。 |
/p:AllowIncompatiblePlatform={True | False} | False | 指定发布操作是否应继续进行,而不管可能存在的不兼容 SQL Server 平台。 |
/p:BackupDatabaseBeforeChanges={True | False} | False | 在部署任何更改前备份数据库。 |
/p:BlockOnPossibleDataLoss={True | False} | True | 指定在发布操作可能导致数据丢失的情况下,是否终止发布集。 |
/p:BlockWhenDriftDetected={True | False} | True | 指定是否阻止更新其架构与其注册不再匹配或已取消注册的数据库。 |
/p:CommandTimeout = { integer } | 60 | 指定针对 SQL Server 执行查询时的命令超时(以秒为单位)。 |
/p:CommentOutSetVarDeclarations={True | False} | False | 指定是否在生成的发布脚本中注释掉 SETVAR 变量声明。如果您打算在发布时使用 SQLCMD.EXE 等工具指定命令行上的值,则可以选择这样做。 |
/p:CompareUsingTargetCollation={True | False} | False | 此设置指示在部署过程中如何处理数据库的排序规则;默认情况下,如果目标数据库的排序规则与源所指定的排序规则不匹配,就将更新目标数据库的排序规则。设置此选项后,应使用目标数据库(或服务器)的排序规则。 |
/p:CreateNewDatabase={True | False} | False | 指定当您发布到数据库时,是否应更新目标数据库或是否应删除并重新创建目标数据库。 |
/p:DeployDatabaseInSingleUserMode={True | False} | False | 如果为 true,则数据库在部署前将设置为单用户模式。 |
/p:DisableAndReenableDdlTriggers={True | False} | True | 指定在发布过程开始时是否禁用数据定义语言 (DDL) 触发器,以及在发布操作结束时是否重新启用此类触发器。 |
/p:DoNotAlterChangeDataCaptureObjects={True | False} | True | 如果为 true,则不更改变更数据捕获对象。 |
/p:DoNotAlterReplicatedObjects={True | False} | True | 指定是否在验证过程中标识重复的对象。 |
/p:DoNotDropObjectType={ Aggregates | ApplicationRoles | Assemblies | AsymmetricKeys | BrokerPriorities | Certificates | Contracts | DatabaseRoles | DatabaseTriggers | Defaults | ExtendedProperties | Filegroups | FileTables | FullTextCatalogs | FullTextStoplists | MessageTypes | PartitionFunctions | PartitionSchemes | Permissions | Queues | RemoteServiceBindings | RoleMembership | Rules | ScalarValuedFunctions | SearchPropertyLists | Sequences | Services | Signatures | StoredProcedures | SymmetricKeys | Synonyms | Tables | TableValuedFunctions | UserDefinedDataTypes | UserDefinedTableTypes | ClrUserDefinedTypes | Users | Views | XmlSchemaCollections | Audits | Credentials | CryptographicProviders | DatabaseAuditSpecifications | Endpoints | ErrorMessages | EventNotifications | EventSessions | LinkedServerLogins | Routes | ServerAuditSpecifications | ServerRoleMembership | ServerRoles | ServerTriggers } | N/A。 | 当 DropObjectsNotInSource 为 true 时,不应删除的对象类型 |
/p:DoNotDropObjectTypes= { string } | N/A | 当 DropObjectsNotInSource 为 true 时,不应删除的以分号分隔的对象类型列表。有效的对象类型名称为 Aggregates、ApplicationRoles、Assemblies、AsymmetricKeys、BrokerPriorities、Certificates、Contracts、DatabaseRoles、DatabaseTriggers、Defaults、ExtendedProperties、Filegroups、FileTables、FullTextCatalogs、FullTextStoplists、MessageTypes、PartitionFunctions、PartitionSchemes、Permissions、Queues、RemoteServiceBindings、RoleMembership、Rules、ScalarValuedFunctions、SearchPropertyLists、Sequences、Services、Signatures、StoredProcedures、SymmetricKeys、Synonyms、Tables、TableValuedFunctions、UserDefinedDataTypes、UserDefinedTableTypes、ClrUserDefinedTypes、Users、Views、XmlSchemaCollections、Audits、Credentials、CryptographicProviders、DatabaseAuditSpecifications、Endpoints、ErrorMessages、EventNotifications、EventSessions、LinkedServerLogins、LinkedServers、Logins、Routes、ServerAuditSpecifications、ServerRoleMembership、ServerRoles、ServerTriggers。 |
/p:DropConstraintsNotInSource={True | False} | True | 指定当您发布到数据库时,发布操作是否从目标数据库中删除数据库快照 (.dacpac) 中不存在的约束。 |
/p:DropDmlTriggersNotInSource={True | False} | True | 指定当您发布到数据库时,发布操作是否从目标数据库中删除数据库快照 (.dacpac) 中不存在的数据操作语言 (DML) 触发器。 |
/p:DropExtendedPropertiesNotInSource={True | False} | True | 指定当您发布到数据库时,发布操作是否从目标数据库中删除数据库快照 (.dacpac) 中不存在的扩展属性。 |
/p:DropIndexesNotInSource={True | False} | True | 指定当您发布到数据库时,发布操作是否从目标数据库中删除数据库快照 (.dacpac) 中不存在的索引。 |
/p:DropObjectsNotInSource={True | False} | False | 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的对象。 |
/p:DropPermissionsNotInSource={True | False} | False | 指定当您发布到数据库时,发布操作是否从目标数据库中删除数据库快照 (.dacpac) 中不存在的权限。 |
/p:DropRoleMembersNotInSource={True | False} | False | 指定当您发布到数据库时,发布操作是否从目标数据库中删除数据库快照 (.dacpac) 中不存在的角色成员。 |
/p:ExcludeObjectType={ Aggregates | ApplicationRoles | Assemblies | AsymmetricKeys | BrokerPriorities | Certificates | Contracts | DatabaseRoles | DatabaseTriggers | Defaults | ExtendedProperties | Filegroups | FileTables | FullTextCatalogs | FullTextStoplists | MessageTypes | PartitionFunctions | PartitionSchemes | Permissions | Queues | RemoteServiceBindings | RoleMembership | Rules | ScalarValuedFunctions | SearchPropertyLists | Sequences | Services | Signatures | StoredProcedures | SymmetricKeys | Synonyms | Tables | TableValuedFunctions | UserDefinedDataTypes | UserDefinedTableTypes | ClrUserDefinedTypes | Users | Views | XmlSchemaCollections | Audits | Credentials | CryptographicProviders | DatabaseAuditSpecifications | Endpoints | ErrorMessages | EventNotifications | EventSessions | LinkedServerLogins | Routes | ServerAuditSpecifications | ServerRoleMembership | ServerRoles | ServerTriggers } | N/A | 应在部署期间忽略的对象类型。 |
/p:ExcludeObjectTypes={ string } | N/A | 应在部署期间忽略的以分号分隔的对象类型列表。有效的对象类型名称为 Aggregates、ApplicationRoles、Assemblies、AsymmetricKeys、BrokerPriorities、Certificates、Contracts、DatabaseRoles、DatabaseTriggers、Defaults、ExtendedProperties、Filegroups、FileTables、FullTextCatalogs、FullTextStoplists、MessageTypes、PartitionFunctions、PartitionSchemes、Permissions、Queues、RemoteServiceBindings、RoleMembership、Rules、ScalarValuedFunctions、SearchPropertyLists、Sequences、Services、Signatures、StoredProcedures、SymmetricKeys、Synonyms、Tables、TableValuedFunctions、UserDefinedDataTypes、UserDefinedTableTypes、ClrUserDefinedTypes、Users、Views、XmlSchemaCollections、Audits、Credentials、CryptographicProviders、DatabaseAuditSpecifications、Endpoints、ErrorMessages、EventNotifications、EventSessions、LinkedServerLogins、LinkedServers、Logins、Routes、ServerAuditSpecifications、ServerRoleMembership、ServerRoles、ServerTriggers。 |
/p:GenerateSmartDefaults={True | False} | False | 指定当 SqlPackage.exe 使用一个不允许 Null 值的列更新一个包含数据的表时,是否自动提供默认值。 |
/p:IgnoreAnsiNulls={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 ANSI NULLS 设置之间的差异。 |
/p: IgnoreAuthorizer={True | False} | False | 指定当您发布到数据库时,是忽略还是更新授权者之间的差异。 |
/p:IgnoreColumnCollation={True | False} | False | 指定当您发布到数据库时,是忽略还是更新列排序规则之间的差异。 |
/p:IgnoreComments={True | False} | False | 指定当您发布到数据库时,是忽略还是更新注释顺序之间的差异。 |
/p:IgnoreCryptographicProviderFilePath={True | False} | True | 指定当您发布到数据库时,是忽略还是更新加密提供程序的文件路径之间的差异。 |
/p:IgnoreDdlTriggerOrder={True | False} | False | 指定当您发布到数据库时,是忽略还是更新数据定义语言 (DDL) 触发器顺序之间的差异。 |
/p:IgnoreDdlTriggerState={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 DDL 触发器的已启用状态或已禁用状态之间的差异。 |
/p:IgnoreDefaultSchema={True | False} | False | 指定当您发布到数据库时,是忽略还是更新默认架构之间的差异。 |
/p:IgnoreDmlTriggerOrder={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 DML 触发器顺序之间的差异。 |
/p:IgnoreDmlTriggerState={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 DML 触发器的已启用状态或已禁用状态之间的差异。 |
/p:IgnoreExtendedProperties={True | False} | False | 指定当您发布到数据库时,是忽略还是更新扩展属性之间的差异。 |
/p:IgnoreFileAndLogFilePath={True | False} | True | 指定当您发布到数据库时,是忽略还是更新文件和日志文件的路径之间的差异。 |
/p:IgnoreFilegroupPlacement={True | False} | True | 指定当您发布到数据库时,是忽略还是更新 FILEGROUP 的位置之间的差异。 |
/p:IgnoreFileSize={True | False} | True | 指定当您发布到数据库时,是忽略还是更新文件大小之间的差异。 |
/p:IgnoreFillFactor={True | False} | True | 指定当您发布到数据库时,是忽略还是更新填充因子之间的差异。 |
/p:IgnoreFullTextCatalogFilePath={True | False} | True | 指定当您发布到数据库时,是忽略还是更新全文索引文件的路径之间的差异。 |
/p:IgnoreIdentitySeed={True | False} | False | 指定当您发布到数据库时,是忽略还是更新标识列的种子之间的差异。 |
/p:IgnoreIncrement={True | False} | False | 指定当您发布到数据库时,是忽略还是更新标识列的增量之间的差异。 |
/p:IgnoreIndexOptions={True | False} | False | 指定当您发布到数据库时,是忽略还是更新索引选项之间的差异。 |
/p:IgnoreIndexPadding={True | False} | True | 指定当您发布到数据库时,是忽略还是更新索引填充之间的差异。 |
/p:IgnoreKeywordCasing={True | False} | True | 指定当您发布到数据库时,是忽略还是更新关键字大小写之间的差异。 |
/p:IgnoreLockHintsOnIndexes={True | False} | False | 指定当您发布到数据库时,是忽略还是更新索引上的锁提示之间的差异。 |
/p:IgnoreLoginSids={True | False} | True | 指定当您发布到数据库时,是忽略还是更新安全标识符 (SID) 之间的差异。 |
/p:IgnoreNotForReplication={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 not-for-replication 设置之间的差异。 |
/p:IgnoreObjectPlacementOnPartitionScheme={True | False} | True | 指定当您发布到数据库时,是忽略还是更新对象在分区方案上的位置之间的差异。 |
/p:IgnorePartitionSchemes={True | False} | False | 指定当您发布到数据库时,是忽略还是更新分区方案和函数之间的差异。 |
/p:IgnorePermissions={True | False} | False | 指定当您发布到数据库时,是忽略还是更新权限之间的差异。 |
/p:IgnoreQuotedIdentifiers={True | False} | False | 指定当您发布到数据库时,是忽略还是更新带引号的标识符设置之间的差异。 |
/p:IgnoreRoleMembership={True | False} | False | 指定当您发布到数据库时,应忽略还是更新登录的角色成员身份之间的差异。 |
/p:IgnoreRouteLifetime={True | False} | True | 指定当您发布到数据库时,是忽略还是更新登录的角色成员身份之间的差异。 |
/p:IgnoreSemicolonBetweenStatements={True | False} | True | 指定当您发布到数据库时,是忽略还是更新 Transact-SQL 语句之间的分号的差异。 |
/p:IgnoreTableOptions={True | False} | False | 指定当您发布到数据库时,是忽略还是更新表选项之间的差异。 |
/p:IgnoreUserSettingsObjects={True | False} | False | 指定当您发布到数据库时,是忽略还是更新用户设置选项之间的差异。 |
/p:IgnoreWhitespace={True | False} | True | 指定当您发布到数据库时,是忽略还是更新空白中的差异。 |
/p:IgnoreWithNocheckOnCheckConstraints={True | False} | False | 指定当您发布到数据库时,是忽略还是更新用于 CHECK 约束的 WITH NOCHECK 子句的值之间的差异。 |
/p:IgnoreWithNocheckOnForeignKeys={True | False} | False | 指定当您发布到数据库时,是忽略还是更新用于外键的 WITH NOCHECK 子句的值之间的差异。 |
/p:IncludeCompositeObjects={True | False} | False | 指定是否将所有复合元素作为单个发布操作的一部分包含。 |
/p:IncludeTransactionalScripts={True | False} | False | 指定当您发布到数据库时,是否在任何可能的位置使用事务性语句。 |
/p:NoAlterStatementsToChangeClrTypes={True | False} | False | 指定发布操作在存在差异时应始终删除并重新创建程序集,而不是发出 ALTER ASSEMBLY 语句。 |
/p:PopulateFilesOnFilegroups={True | False} | True | 指定当您在目标数据库中创建一个新的 FileGroup 时,是否也创建一个新文件。 |
/p:RegisterDataTierApplication={True | False} | False | 指定是否向数据库服务器注册该架构。 |
/p:RunDeploymentPlanExecutors={True | False} | False | 指定在执行其他操作时是否应运行 DeploymentPlanExecutor 参与者。 |
/p:ScriptDatabaseCollation={True | False} | False | 指定当您发布到数据库时,是忽略还是更新数据库排序规则之间的差异。 |
/p:ScriptDatabaseCompatibility={True | False} | True | 指定当您发布到数据库时,是忽略还是更新数据库兼容性之间的差异。 |
/p:ScriptDatabaseOptions={True | False} | True | 指定当您发布到数据库时,是设置还是更新目标数据库属性。 |
/p:ScriptDeployStateChecks= {True | False } | False | 指定是否在发布脚本中生成声明,以验证数据库名称和服务器名称是否与数据库项目中指定的名称匹配。 |
/p:ScriptFileSize={True | False} | False | 控制在向文件组添加文件时是否指定大小。 |
/p:ScriptNewConstraintValidation={True | False} | True | 指定在发布结束时是否将所有约束作为一个集合进行验证,从而避免 CHECK 约束或外键约束在发布操作过程中导致数据错误。如果此选项为 False,则将发布约束而不检查相应的数据。 |
/p:ScriptRefreshModule={True | False} | True | 指定是否在发布脚本的结尾处包含刷新语句。 |
/p:Storage={File | Memory} | Memory | 指定在生成数据库模型时如何存储元素。出于性能原因,默认值为 InMemory。对于非常大的数据库,需要文件备份的存储。 |
/p:TreatVerificationErrorsAsWarnings={True | False} | False | 指定是否将发布验证过程中出现的错误视为警告。在对目标数据库执行生成的部署计划之前,会先对该计划执行检查。计划验证将检测仅有目标的对象(如索引)丢失等问题,必须解决这些问题以进行更改。验证还检测以下情况:依赖项(如表或视图)因对复合项目的引用而存在,但未存在于目标数据库中。您可选择将验证错误视为警告以获取问题的完整列表,而不是允许发布操作在出现第一个错误时停止。 |
/p:UnmodifiableObjectWarnings={True | False} | True | 指定在无法修改的对象中发现差异(例如,如果文件的大小或路径存在差异)时是否生成警告。 |
/p:VerifyCollationCompatibility={True | False} | True | 指定是否验证排序规则兼容性。 |
/p:VerifyDeployment={True | False} | True | 指定在出现可能阻止成功发布的问题的情况下,是否在发布前执行将停止发布操作的检查。例如,如果您在发布过程中收到错误,则发布操作可能会停止,因为数据库项目中不存在目标数据库上的外键。 |
SQLCMD 变量
下表介绍可用于重写发布操作过程中使用的 SQL 命令 (sqlcmd) 变量的值的选项的格式。命令行上指定的变量的值将重写分配给变量(例如,在发布配置文件中)的其他值。
参数 | 默认 | 说明 |
---|---|---|
/Variables:{PropertyName}={Value} | 为特定于操作的变量指定名称值对;{VariableName}={Value}。该 DACPAC 文件包含有效 SQLCMD 变量的列表。如果没有为每个变量都提供值,结果将是错误。 |
导出参数和属性
SqlPackage.exe 导出操作将活动数据库从 SQL Server 或 Windows Azure SQL Database 导出到 BACPAC 包(.bacpac 文件)。默认情况下,所有表的数据将包含在 .bacpac 文件中。你可以选择仅指定要为其导出数据的表的子集。即使针对导出指定表的子集,对导出操作的验证可确保 Windows Azure SQL Database 对完整目标数据库的兼容性。
参数
源:所有 源参数 都支持导出,/SourceFile: 除外。
目标:导出的唯一有效目标参数是 /TargetFile:{string},其中 {string} 是磁盘上将写入 .bacpac 文件的文件路径。
限制:
导出表数据仅支持用于用户表。
为导出指定的表必须在封闭集中。用户表无法包含延伸到指定表集之外的入站或出站外键。
当你使用 SqlPackage.exe 指定导出操作时,可以使用以下参数:
参数 | 缩写形式 | 是否必需? | 说明 |
---|---|---|---|
/TargetFile:{string} | /tf:{string} | Y | 指定将在其中生成已导出 .bacpac 文件的文件路径。文件路径必须是现有目录,并且字符串必须包含文件名,该文件名中包括 .bacpac 扩展名。路径名称不能超过 256 个字符的 Windows 文件路径限制。 |
属性
下表指定 SqlPackage.exe 提供用于导出 BACPAC 文件的命令行属性。
属性 | 默认 | 说明 |
---|---|---|
/p:CommandTimeout = { integer } | 60 | 指定针对 SQL Server 执行查询时的命令超时(以秒为单位)。 |
/p:TableData={string} | N/A | 此属性用于指定要包含为导出操作一部分的个别用户表。使用由两个部分组成的表名称指定表。 |
/p:Storage={File|Memory} | Memory | 指定在生成数据库模型时如何存储元素。出于性能原因,默认值为 Memory。对于非常大的数据库,需要文件备份的存储。 |
导入参数和属性
SqlPackage.exe 导入操作将架构和表数据从 BACPAC 包(.bacpac 文件)导入到 SQL Server 或 Windows Azure SQL Database 中的新的或空白的数据库中。在对现有数据库进行导入操作时,目标数据库无法包含任何用户定义的架构对象。
参数
源:仅 /SourceFile:{string} 参数对于导入有效,其中 {string} 是磁盘上源 .bacpac 文件所在的文件路径。
目标:所有 目标参数 都对导入有效,/TargetFile 除外。
当你使用 SqlPackage.exe 指定导入操作时,可以使用以下其他目标参数:
参数 | 缩写形式 | 是否必需? | 说明 |
---|---|---|---|
/SourceFile:{string} | /sf:{string} | Y | 指定源文件所在的文件路径。该字符串必须包括目标文件名,该文件名中包括 .bacpac 扩展名。路径名称不能超过 256 个字符的 Windows 文件路径限制。 |
属性
下表指定 SqlPackage.exe 提供用于导出 BACPAC 包的命令行属性:
属性 | 默认 | 说明 |
---|---|---|
/p:CommandTimeout = {Integer} | 60 | 指定针对 SQL Server 执行查询时的命令超时(以秒为单位)。 |
/p:ImportContributorArguments = { String } | N/A | 为部署参与者指定部署参与者参数。这应该是用分号分隔的值列表。 |
/p:ImportContributors = { String } | N/A | 指定在导入 bacpac 时应运行的部署参与者。这应该是以分号分隔的完全限定的生成参与者名称或 ID 列表。 |
/p:Storage={File | Memory} | Memory | 指定在生成数据库模型时如何存储元素。出于性能原因,默认值为 Memory。对于非常大的数据库,需要文件备份的存储。 |
DeployReport 参数和属性
SqlPackage.exe 报告操作创建将由发布操作完成的更改的 XML 报表。
参数
源:只有 /SourceFile 参数对 DeployReport 有效。
目标:所有 目标参数 都对 DeployReport 有效。
当您使用 SqlPackage.exe 指定 DeployReport 操作时,以下其他目标参数可用:
参数 | 缩写形式 | 是否必需? | 说明 |
---|---|---|---|
/OutputPath:{string} | /op:{string} | Y | 指定生成 XML 输出文件的文件路径。 |
属性
下表指定 SqlPackage.exe 提供的用于更改 DeployReport 操作的效果的命令行属性。
属性 | 默认 | 说明 |
---|---|---|
/p:AdditionalDeploymentContributorArguments={String} | N/A | 为部署参与者指定其他部署参与者参数。这应该是用分号分隔的值列表。 |
/p:AdditionalDeploymentContributors={String} | N/A | 指定应在部署 dacpac 时运行的其他部署参与者。这应该是以分号分隔的完全限定的生成参与者名称或 ID 列表。 |
/p:AllowDropBlockingAssemblies={True | False} | False | SqlClr 部署使用此属性以导致阻塞程序集作为部署计划的组成部分被删除。默认情况下,如果需要删除引用程序集,则任何阻塞或引用程序集将阻止程序集更新。 |
/p:AllowIncompatiblePlatform={True | False} | False | 指定报表操作是否应继续进行,而不管可能存在的不兼容 SQL Server 平台。 |
/p:BackupDatabaseBeforeChanges={True | False} | False | 在部署任何更改前备份数据库。 |
/p:BlockOnPossibleDataLoss={True | False} | True | 指定在发布操作可能导致数据丢失的情况下,是否应终止发布集。操作。 |
/p:BlockWhenDriftDetected={True | False} | True | 指定是否阻止更新其架构与其注册不再匹配或已取消注册的数据库。 |
/p:CommandTimeout = {Integer} | 60 | 指定针对 SQL Server 执行查询时的命令超时(以秒为单位)。 |
/p:CommentOutSetVarDeclarations={True | False} | False | 指定是否应在生成的发布脚本中注释掉 SETVAR 变量的声明。如果您打算在发布时使用 SQLCMD.EXE 等工具指定命令行上的值,则可以选择这样做。 |
/p:CompareUsingTargetCollation={True | False} | False | 此设置指示在部署过程中如何处理数据库的排序规则;默认情况下,如果目标数据库的排序规则与源所指定的排序规则不匹配,就将更新目标数据库的排序规则。设置此选项后,应使用目标数据库(或服务器)的排序规则。 |
/p:CreateNewDatabase={True | False} | False | 指定当您发布到数据库时,是否应更新目标数据库或是否应删除并重新创建目标数据库。 |
/p:DeployDatabaseInSingleUserMode={True | False} | False | 如果为 true,则数据库在部署前将设置为单用户模式。 |
/p:DisableAndReenableDdlTriggers={True | False} | True | 指定在发布过程开始时是否禁用数据定义语言 (DDL) 触发器,以及在发布操作结束时是否重新启用此类触发器。 |
/p:DoNotAlterChangeDataCaptureObjects={True | False} | False | 如果为 true,则不更改变更数据捕获对象。 |
/p:DoNotAlterReplicatedObjects={True | False} | True | 指定是否在验证过程中标识重复的对象。 |
/p:DoNotDropObjectType ={ Aggregates | ApplicationRoles | Assemblies | AsymmetricKeys | BrokerPriorities | Certificates | Contracts | DatabaseRoles | DatabaseTriggers | Defaults | ExtendedProperties | Filegroups | FileTables | FullTextCatalogs | FullTextStoplists | MessageTypes | PartitionFunctions | PartitionSchemes | Permissions | Queues | RemoteServiceBindings | RoleMembership | Rules | ScalarValuedFunctions | SearchPropertyLists | Sequences | Services | Signatures | StoredProcedures | SymmetricKeys | Synonyms | Tables | TableValuedFunctions | UserDefinedDataTypes | UserDefinedTableTypes | ClrUserDefinedTypes | Users | Views | XmlSchemaCollections | Audits | Credentials | CryptographicProviders | DatabaseAuditSpecifications | Endpoints | ErrorMessages | EventNotifications | EventSessions | LinkedServerLogins | Routes | ServerAuditSpecifications | ServerRoleMembership | ServerRoles | ServerTriggers } | N/A | 当 DropObjectsNotInSource 为 true 时,不应删除的对象类型。 |
/p:DoNotDropObjectTypes= { string } | N/A | 当 DropObjectsNotInSource 为 true 时,不应删除的以分号分隔的对象类型列表。有效的对象类型名称为 Aggregates、ApplicationRoles、Assemblies、AsymmetricKeys、BrokerPriorities、Certificates、Contracts、DatabaseRoles、DatabaseTriggers、Defaults、ExtendedProperties、Filegroups、FileTables、FullTextCatalogs、FullTextStoplists、MessageTypes、PartitionFunctions、PartitionSchemes、Permissions、Queues、RemoteServiceBindings、RoleMembership、Rules、ScalarValuedFunctions、SearchPropertyLists、Sequences、Services、Signatures、StoredProcedures、SymmetricKeys、Synonyms、Tables、TableValuedFunctions、UserDefinedDataTypes、UserDefinedTableTypes、ClrUserDefinedTypes、Users、Views、XmlSchemaCollections、Audits、Credentials、CryptographicProviders、DatabaseAuditSpecifications、Endpoints、ErrorMessages、EventNotifications、EventSessions、LinkedServerLogins、LinkedServers、Logins、Routes、ServerAuditSpecifications、ServerRoleMembership、ServerRoles、ServerTriggers。 |
/p:DropConstraintsNotInSource={True | False} | True | 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的约束。 |
/p:DropDmlTriggersNotInSource={True | False} | True | 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的 DML 触发器。 |
/p:DropExtendedPropertiesNotInSource={True | False} | True | 指定当您发布到数据库时,是否从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的扩展属性。 |
/p:DropIndexesNotInSource={True | False} | True | 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的索引。 |
/p:DropObjectsNotInSource={True | False} | False | 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的对象。 |
/p:DropPermissionsNotInSource={True | False} | False | 指定当您更新到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的权限。 |
/p:DropRoleMembersNotInSource={True | False} | False | 指定当您更新到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中未定义的角色成员。 |
/p:ExcludeObjectType={ Aggregates | ApplicationRoles | Assemblies | AsymmetricKeys | BrokerPriorities | Certificates | Contracts | DatabaseRoles | DatabaseTriggers | Defaults | ExtendedProperties | Filegroups | FileTables | FullTextCatalogs | FullTextStoplists | MessageTypes | PartitionFunctions | PartitionSchemes | Permissions | Queues | RemoteServiceBindings | RoleMembership | Rules | ScalarValuedFunctions | SearchPropertyLists | Sequences | Services | Signatures | StoredProcedures | SymmetricKeys | Synonyms | Tables | TableValuedFunctions | UserDefinedDataTypes | UserDefinedTableTypes | ClrUserDefinedTypes | Users | Views | XmlSchemaCollections | Audits | Credentials | CryptographicProviders | DatabaseAuditSpecifications | Endpoints | ErrorMessages | EventNotifications | EventSessions | LinkedServerLogins | Routes | ServerAuditSpecifications | ServerRoleMembership | ServerRoles | ServerTriggers } | N/A | 应在部署期间忽略的对象类型。 |
/p:ExcludeObjectTypes={ string } | N/A | 应在部署期间忽略的以分号分隔的对象类型列表。有效的对象类型名称为 Aggregates、ApplicationRoles、Assemblies、AsymmetricKeys、BrokerPriorities、Certificates、Contracts、DatabaseRoles、DatabaseTriggers、Defaults、ExtendedProperties、Filegroups、FileTables、FullTextCatalogs、FullTextStoplists、MessageTypes、PartitionFunctions、PartitionSchemes、Permissions、Queues、RemoteServiceBindings、RoleMembership、Rules、ScalarValuedFunctions、SearchPropertyLists、Sequences、Services、Signatures、StoredProcedures、SymmetricKeys、Synonyms、Tables、TableValuedFunctions、UserDefinedDataTypes、UserDefinedTableTypes、ClrUserDefinedTypes、Users、Views、XmlSchemaCollections、Audits、Credentials、CryptographicProviders、DatabaseAuditSpecifications、Endpoints、ErrorMessages、EventNotifications、EventSessions、LinkedServerLogins、LinkedServers、Logins、Routes、ServerAuditSpecifications、ServerRoleMembership、ServerRoles、ServerTriggers。 |
/p:GenerateSmartDefaults={True | False} | False | 在使用一个不允许 Null 值的列更新一个包含数据的表时,自动提供默认值。 |
/p:IgnoreAnsiNulls={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 ANSI NULLS 设置之间的差异。 |
/p: IgnoreAuthorizer={True | False} | False | 指定当您发布到数据库时,是忽略还是更新授权者之间的差异。 |
/p:IgnoreColumnCollation={True | False} | False | 指定当您发布到数据库时,是忽略还是更新列排序规则之间的差异。 |
/p:IgnoreComments={True | False} | False | 指定当您发布到数据库时,是忽略还是更新注释顺序之间的差异。 |
/p:IgnoreCryptographicProviderFile={True | False} | True | 指定当您发布到数据库时,是忽略还是更新加密提供程序的文件路径之间的差异。 |
/p:IgnoreDdlTriggerOrder={True | False} | False | 指定当您发布到数据库时,是忽略还是更新数据定义语言 (DDL) 触发器顺序之间的差异。 |
/p:IgnoreDdlTriggerState={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 DDL 触发器的已启用状态或已禁用状态之间的差异。 |
/p:IgnoreDefaultSchema={True | False} | False | 指定当您发布到数据库时,是忽略还是更新默认架构之间的差异。 |
/p:IgnoreDmlTriggerOrder={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 DML 触发器顺序之间的差异。 |
/p:IgnoreDmlTriggerState={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 DML 触发器的已启用状态或已禁用状态之间的差异。 |
/p:IgnoreExtendedProperties={True | False} | False | 指定当您发布到数据库时,是忽略还是更新扩展属性之间的差异。 |
/p:IgnoreFileAndLogFilePath={True | False} | True | 指定当您发布到数据库时,是忽略还是更新文件和日志文件的路径之间的差异。 |
/p:IgnoreFilegroupPlacement={True | False} | True | 指定当您发布到数据库时,是忽略还是更新 FILEGROUP 的位置之间的差异。 |
/p:IgnoreFileSize={True | False} | True | 指定当您发布到数据库时,是忽略还是更新文件大小之间的差异。 |
/p:IgnoreFillFactor={True | False} | True | 指定当您发布到数据库时,是忽略还是更新填充因子之间的差异。 |
/p:IgnoreFullTextCatalogFilePath={True | False} | True | 指定当您发布到数据库时,是忽略还是更新全文索引文件的路径之间的差异。 |
/p:IgnoreIdentitySeed={True | False} | False | 指定当您发布到数据库时,是忽略还是更新标识列的种子之间的差异。 |
/p:IgnoreIncrement={True | False} | False | 指定当您发布到数据库时,是忽略还是更新标识列的增量之间的差异。 |
/p:IgnoreIndexOptions={True | False} | False | 指定当您发布到数据库时,是忽略还是更新索引选项之间的差异。 |
/p:IgnoreIndexPadding={True | False} | True | 指定当您发布到数据库时,是忽略还是更新索引填充之间的差异。 |
/p:IgnoreKeywordCasing={True | False} | True | 指定当您发布到数据库时,是忽略还是更新关键字大小写之间的差异。 |
/p:IgnoreLoginSids={True | False} | True | 指定当您发布到数据库时,是忽略还是更新安全标识符 (SID) 之间的差异。 |
/p:IgnoreNotForReplication={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 not-for-replication 设置之间的差异。 |
/p:IgnoreObjectPlacementOnPartitionScheme={True | False} | True | 指定当您发布到数据库时,是忽略还是更新对象在分区方案上的位置之间的差异。 |
/p:IgnorePartitionSchemes={True | False} | False | 指定当您发布到数据库时,是忽略还是更新分区方案和函数之间的差异。 |
/p:IgnorePermissions={True | False} | False | 指定当您发布到数据库时,是忽略还是更新权限之间的差异。 |
/p:IgnoreQuotedIdentifiers={True | False} | False | 指定当您发布到数据库时,是忽略还是更新带引号的标识符设置之间的差异。 |
/p:IgnoreRoleMembership={True | False} | False | 指定当您发布到数据库时,应忽略还是更新登录的角色成员身份之间的差异。 |
/p:IgnoreRouteLifetime={True | False} | True | 指定当您发布到数据库时,是忽略还是更新登录的角色成员身份之间的差异。 |
/p:IgnoreSemicolonBetweenStatements={True | False} | True | 指定当您发布到数据库时,是忽略还是更新 Transact-SQL 语句之间的分号的差异。 |
/p:IgnoreTableOptions={True | False} | False | 指定当您发布到数据库时,是忽略还是更新表选项之间的差异。 |
/p:IgnoreUserSettingsObjects={True | False} | False | 指定当您发布到数据库时,是忽略还是更新用户设置选项之间的差异。 |
/p:IgnoreWhitespace={True | False} | True | 指定当您发布到数据库时,是忽略还是更新空白中的差异。 |
/p:IgnoreWithNocheckOnCheckConstraints={True | False} | False | 指定当您发布到数据库时,是忽略还是更新用于 CHECK 约束的 WITH NOCHECK 子句的值之间的差异。 |
/p:IgnoreWithNocheckOnForeignKeys={True | False} | False | 指定当您发布到数据库时,是忽略还是更新用于外键的 WITH NOCHECK 子句的值之间的差异。 |
/p:IncludeCompositeObjects={True | False} | False | 指定是否将所有复合元素作为单个发布操作的一部分包含。 |
/p:IncludeTransactionalScripts={True | False} | False | 指定当您发布到数据库时,是否在任何可能的位置使用事务性语句。 |
/p:NoAlterStatementsToChangeClrTypes={True | False} | False | 指定发布操作在存在差异时应始终删除并重新创建程序集,而不是发出 ALTER ASSEMBLY 语句。 |
/p:PopulateFilesOnFilegroups={True | False} | True | 指定当您在目标数据库中创建一个新的 FileGroup 时,是否也创建一个新文件。 |
/p:RegisterDataTierApplication={True | False} | False | 指定是否向数据库服务器注册该架构。 |
/p:RunDeploymentPlanExecutors={True | False} | False | 指定在执行其他操作时是否应运行 DeploymentPlanExecutor 参与者。 |
/p:ScriptDatabaseCollation={True | False} | False | 指定当您发布到数据库时,是忽略还是更新数据库排序规则之间的差异。 |
/p:ScriptDatabaseCompatibility={True | False} | True | 指定当您发布到数据库时,是忽略还是更新数据库兼容性之间的差异。 |
/p:ScriptDatabaseOptions={True | False} | True | 指定当您发布到数据库时,是设置还是更新目标数据库属性。 |
/p:ScriptFileSize={True | False} | False | 控制在向文件组添加文件时是否指定大小。 |
/p:ScriptNewConstraintValidation={True | False} | True | 指定在发布结束时是否将所有约束作为一个集合进行验证,从而避免 CHECK 约束或外键约束在发布操作过程中导致数据错误。如果此选项为 False,则将发布约束而不检查相应的数据。 |
/p:ScriptDeployStateChecks={True | False} | False | 指定是否在发布脚本中生成语句以验证数据库名称和服务器名称是否与数据库项目中指定的名称匹配。 |
/p:ScriptRefreshModule={True | False} | True | 指定是否在发布脚本的结尾处包含刷新语句。 |
/p:Storage={File | Memory} | Memory | 指定在生成数据库模型时如何存储元素。出于性能原因,默认值为 InMemory。对于非常大的数据库,需要文件备份的存储。 |
/p:TreatVerificationErrorsAsWarnings={True | False} | False | 指定是否将发布验证过程中出现的错误视为警告。在对目标数据库执行生成的部署计划之前,会先对该计划执行检查。计划验证将检测仅有目标的对象(如索引)丢失等问题,必须解决这些问题以进行更改。验证还检测以下情况:依赖项(如表或视图)因对复合项目的引用而存在,但未存在于目标数据库中。您可选择将验证错误视为警告以获取问题的完整列表,而不是允许发布操作在出现第一个错误时停止。 |
/p:UnmodifiableObjectWarnings={True | False} | True | 指定在无法修改的对象中发现差异(例如,如果文件的大小或路径存在差异)时是否生成警告。 |
/p:VerifyCollationCompatibility={True | False} | True | 指定是否验证排序规则兼容性。 |
/p:VerifyDeployment={True | False} | True | 指定在出现可能阻止成功发布的问题的情况下,是否在发布前执行将停止发布操作的检查。例如,如果您在发布过程中收到错误,则发布操作可能会停止,因为数据库项目中不存在目标数据库上的外键。 |
DriftReport 参数
SqlPackage.exe 报告操作创建自注册数据库注册以来已对其做出的更改的 XML 报表。
参数
**源:**不适用
**目标:**所有目标参数 都对 DriftReport 有效,TargetFile 除外。
当您使用 SqlPackage.exe 指定 DriftReport 操作时,以下目标参数可用:
参数 | 缩写形式 | 是否必需? | 说明 |
---|---|---|---|
/OutputPath:{string} | /op:{string} | Y | 指定生成输出文件的文件路径。 |
脚本参数和属性
SqlPackage.exe 脚本操作会创建 Transact-SQL 增量更新脚本,该脚本可更新目标数据库的架构以匹配源数据库的架构。
参数
**源:**只有 /SourceFile: 参数对脚本有效。
**目标:**所有 目标参数 都对脚本有效。
当您使用 SqlPackage.exe 指定脚本操作时,以下其他目标参数可用:
参数 | 缩写形式 | 是否必需? | 说明 |
---|---|---|---|
/OutputPath:{string} | /op:{string} | Y | 指定生成输出文件的文件路径。 |
属性
下表指定 SqlPackage.exe 提供用于更改脚本操作的效果的命令行属性。
属性 | 默认 | 说明 |
---|---|---|
/p:AdditionalDeploymentContributorArguments={String} | N/A | 为部署参与者指定其他部署参与者参数。这应该是用分号分隔的值列表。 |
/p:AdditionalDeploymentContributors={String} | N/A | 指定应在部署 dacpac 时运行的其他部署参与者。这应该是以分号分隔的完全限定的生成参与者名称或 ID 列表。 |
/p:AllowDropBlockingAssemblies={True | False} | False | SqlClr 部署使用此属性以导致阻塞程序集作为部署计划的组成部分被删除。默认情况下,如果需要删除引用程序集,则任何阻塞或引用程序集将阻止程序集更新。 |
/p:AllowIncompatiblePlatform={True | False} | False | 指定报表操作是否应继续进行,而不管可能存在的不兼容 SQL Server 平台。 |
/p:BackupDatabaseBeforeChanges={True | False} | False | 在部署任何更改前备份数据库。 |
/p:BlockOnPossibleDataLoss={True | False} | True | 指定在发布操作可能导致数据丢失的情况下,是否应终止发布集。 |
/p:BlockWhenDriftDetected={True | False} | True | 指定是否阻止更新其架构与其注册不再匹配或已取消注册的数据库。 |
/p:CommandTimeout = {Integer} | 60 | 指定针对 SQL Server 执行查询时的命令超时(以秒为单位)。 |
/p:CommentOutSetVarDeclarations={True | False} | False | 指定是否应在生成的发布脚本中注释掉 SETVAR 变量的声明。如果您打算在发布时使用 SQLCMD.EXE 等工具指定命令行上的值,则可以选择这样做。 |
/p:CompareUsingTargetCollation={True | False} | False | 此设置指示在部署过程中如何处理数据库的排序规则;默认情况下,如果目标数据库的排序规则与源所指定的排序规则不匹配,就将更新目标数据库的排序规则。设置此选项后,应使用目标数据库(或服务器)的排序规则。 |
/p:CreateNewDatabase={True | False} | False | 指定当您发布到数据库时,是否应更新目标数据库或是否应删除并重新创建目标数据库。 |
/p:DeployDatabaseInSingleUserMode={True | False} | False | 如果为 true,则数据库在部署前将设置为单用户模式。 |
/p:DisableAndReenableDdlTriggers={True | False} | True | 指定在发布过程开始时是否禁用数据定义语言 (DDL) 触发器,以及在发布操作结束时是否重新启用此类触发器。 |
/p:DoNotAlterChangeDataCaptureObjects={True | False} | True | 如果为 true,则不更改变更数据捕获对象。 |
/p:DoNotAlterReplicatedObjects={True | False} | True | 指定是否在验证过程中标识重复的对象。 |
/p:DoNotDropObjectType={ Aggregates | ApplicationRoles | Assemblies | AsymmetricKeys | BrokerPriorities | Certificates | Contracts | DatabaseRoles | DatabaseTriggers | Defaults | ExtendedProperties | Filegroups | FileTables | FullTextCatalogs | FullTextStoplists | MessageTypes | PartitionFunctions | PartitionSchemes | Permissions | Queues | RemoteServiceBindings | RoleMembership | Rules | ScalarValuedFunctions | SearchPropertyLists | Sequences | Services | Signatures | StoredProcedures | SymmetricKeys | Synonyms | Tables | TableValuedFunctions | UserDefinedDataTypes | UserDefinedTableTypes | ClrUserDefinedTypes | Users | Views | XmlSchemaCollections | Audits | Credentials | CryptographicProviders | DatabaseAuditSpecifications | Endpoints | ErrorMessages | EventNotifications | EventSessions | LinkedServerLogins | Routes | ServerAuditSpecifications | ServerRoleMembership | ServerRoles | ServerTriggers } | N/A | 当 DropObjectsNotInSource 为 true 时,不应删除的对象类型。 |
/p:DoNotDropObjectTypes= { string } | N/A | 当 DropObjectsNotInSource 为 true 时,不应删除的以分号分隔的对象类型列表。有效的对象类型名称为 Aggregates、ApplicationRoles、Assemblies、AsymmetricKeys、BrokerPriorities、Certificates、Contracts、DatabaseRoles、DatabaseTriggers、Defaults、ExtendedProperties、Filegroups、FileTables、FullTextCatalogs、FullTextStoplists、MessageTypes、PartitionFunctions、PartitionSchemes、Permissions、Queues、RemoteServiceBindings、RoleMembership、Rules、ScalarValuedFunctions、SearchPropertyLists、Sequences、Services、Signatures、StoredProcedures、SymmetricKeys、Synonyms、Tables、TableValuedFunctions、UserDefinedDataTypes、UserDefinedTableTypes、ClrUserDefinedTypes、Users、Views、XmlSchemaCollections、Audits、Credentials、CryptographicProviders、DatabaseAuditSpecifications、Endpoints、ErrorMessages、EventNotifications、EventSessions、LinkedServerLogins、LinkedServers、Logins、Routes、ServerAuditSpecifications、ServerRoleMembership、ServerRoles、ServerTriggers。 |
/p:DropConstraintsNotInSource={True | False} | True | 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的约束。 |
/p:DropDmlTriggersNotInSource={True | False} | True | 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的 DML 触发器。 |
/p:DropExtendedPropertiesNotInSource={True | False} | True | 指定当您发布到数据库时,是否从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的扩展属性。 |
/p:DropIndexesNotInSource={True | False} | True | 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的索引。 |
/p:DropObjectsNotInSource={True | False} | False | 指定当您发布到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的对象。 |
/p:DropPermissionsNotInSource={True | False} | False | 指定当您更新到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中不存在的权限。 |
/p:DropRoleMembersNotInSource={True | False} | False | 指定当您更新到数据库时,是否将从目标数据库中删除数据库快照 (.dacpac) 文件中未定义的角色成员。 |
/p:ExcludeObjectType={ Aggregates | ApplicationRoles | Assemblies | AsymmetricKeys | BrokerPriorities | Certificates | Contracts | DatabaseRoles | DatabaseTriggers | Defaults | ExtendedProperties | Filegroups | FileTables | FullTextCatalogs | FullTextStoplists | MessageTypes | PartitionFunctions | PartitionSchemes | Permissions | Queues | RemoteServiceBindings | RoleMembership | Rules | ScalarValuedFunctions | SearchPropertyLists | Sequences | Services | Signatures | StoredProcedures | SymmetricKeys | Synonyms | Tables | TableValuedFunctions | UserDefinedDataTypes | UserDefinedTableTypes | ClrUserDefinedTypes | Users | Views | XmlSchemaCollections | Audits | Credentials | CryptographicProviders | DatabaseAuditSpecifications | Endpoints | ErrorMessages | EventNotifications | EventSessions | LinkedServerLogins | Routes | ServerAuditSpecifications | ServerRoleMembership | ServerRoles | ServerTriggers } | N/A | 应在部署期间忽略的对象类型。 |
/p:ExcludeObjectTypes={ string } | N/A | 应在部署期间忽略的以分号分隔的对象类型列表。有效的对象类型名称为 Aggregates、ApplicationRoles、Assemblies、AsymmetricKeys、BrokerPriorities、Certificates、Contracts、DatabaseRoles、DatabaseTriggers、Defaults、ExtendedProperties、Filegroups、FileTables、FullTextCatalogs、FullTextStoplists、MessageTypes、PartitionFunctions、PartitionSchemes、Permissions、Queues、RemoteServiceBindings、RoleMembership、Rules、ScalarValuedFunctions、SearchPropertyLists、Sequences、Services、Signatures、StoredProcedures、SymmetricKeys、Synonyms、Tables、TableValuedFunctions、UserDefinedDataTypes、UserDefinedTableTypes、ClrUserDefinedTypes、Users、Views、XmlSchemaCollections、Audits、Credentials、CryptographicProviders、DatabaseAuditSpecifications、Endpoints、ErrorMessages、EventNotifications、EventSessions、LinkedServerLogins、LinkedServers、Logins、Routes、ServerAuditSpecifications、ServerRoleMembership、ServerRoles、ServerTriggers。 |
/p:GenerateSmartDefaults={True | False} | False | 在使用一个不允许 Null 值的列更新一个包含数据的表时,自动提供默认值。 |
/p:IgnoreAnsiNulls={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 ANSI NULLS 设置之间的差异。 |
/p: IgnoreAuthorizer={True | False} | False | 指定当您发布到数据库时,是忽略还是更新授权者之间的差异。 |
/p:IgnoreColumnCollation={True | False} | False | 指定当您发布到数据库时,是忽略还是更新列排序规则之间的差异。 |
/p:IgnoreComments={True | False} | False | 指定当您发布到数据库时,是忽略还是更新注释顺序之间的差异。 |
/p:IgnoreCryptographicProviderFile={True | False} | True | 指定当您发布到数据库时,是忽略还是更新加密提供程序的文件路径之间的差异。 |
/p:IgnoreDdlTriggerOrder={True | False} | False | 指定当您发布到数据库时,是忽略还是更新数据定义语言 (DDL) 触发器顺序之间的差异。 |
/p:IgnoreDdlTriggerState={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 DDL 触发器的已启用状态或已禁用状态之间的差异。 |
/p:IgnoreDefaultSchema={True | False} | False | 指定当您发布到数据库时,是忽略还是更新默认架构之间的差异。 |
/p:IgnoreDmlTriggerOrder={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 DML 触发器顺序之间的差异。 |
/p:IgnoreDmlTriggerState={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 DML 触发器的已启用状态或已禁用状态之间的差异。 |
/p:IgnoreExtendedProperties={True | False} | False | 指定当您发布到数据库时,是忽略还是更新扩展属性之间的差异。 |
/p:IgnoreFileAndLogFilePath={True | False} | True | 指定当您发布到数据库时,是忽略还是更新文件和日志文件的路径之间的差异。 |
/p:IgnoreFilegroupPlacement={True | False} | True | 指定当您发布到数据库时,是忽略还是更新 FILEGROUP 的位置之间的差异。 |
/p:IgnoreFileSize={True | False} | True | 指定当您发布到数据库时,是忽略还是更新文件大小之间的差异。 |
/p:IgnoreFillFactor={True | False} | True | 指定当您发布到数据库时,是忽略还是更新填充因子之间的差异。 |
/p:IgnoreFullTextCatalogFilePath={True | False} | True | 指定当您发布到数据库时,是忽略还是更新全文索引文件的路径之间的差异。 |
/p:IgnoreIdentitySeed={True | False} | False | 指定当您发布到数据库时,是忽略还是更新标识列的种子之间的差异。 |
/p:IgnoreIncrement={True | False} | False | 指定当您发布到数据库时,是忽略还是更新标识列的增量之间的差异。 |
/p:IgnoreIndexOptions={True | False} | False | 指定当您发布到数据库时,是忽略还是更新索引选项之间的差异。 |
/p:IgnoreIndexPadding={True | False} | True | 指定当您发布到数据库时,是忽略还是更新索引填充之间的差异。 |
/p:IgnoreKeywordCasing={True | False} | True | 指定当您发布到数据库时,是忽略还是更新关键字大小写之间的差异。 |
/p:IgnoreLoginSids={True | False} | True | 指定当您发布到数据库时,是忽略还是更新安全标识符 (SID) 之间的差异。 |
/p:IgnoreLockHintsOnIndexes={True | False} | False | 指定当您发布到数据库时,应忽略还是更新索引上的锁提示之间的差异。 |
/p:IgnoreNotForReplication={True | False} | False | 指定当您发布到数据库时,是忽略还是更新 not-for-replication 设置之间的差异。 |
/p:IgnoreObjectPlacementOnPartitionScheme={True | False} | True | 指定当您发布到数据库时,是忽略还是更新对象在分区方案上的位置之间的差异。 |
/p:IgnorePartitionSchemes={True | False} | False | 指定当您发布到数据库时,是忽略还是更新分区方案和函数之间的差异。 |
/p:IgnorePermissions={True | False} | False | 指定当您发布到数据库时,是忽略还是更新权限之间的差异。 |
/p:IgnoreQuotedIdentifiers={True | False} | False | 指定当您发布到数据库时,是忽略还是更新带引号的标识符设置之间的差异。 |
/p:IgnoreRoleMembership={True | False} | False | 指定当您发布到数据库时,应忽略还是更新登录的角色成员身份之间的差异。 |
/p:IgnoreRouteLifetime={True | False} | True | 指定当您发布到数据库时,是忽略还是更新登录的角色成员身份之间的差异。 |
/p:IgnoreSemicolonBetweenStatements={True | False} | True | 指定当您发布到数据库时,是忽略还是更新 Transact-SQL 语句之间的分号的差异。 |
/p:IgnoreTableOptions={True | False} | False | 指定当您发布到数据库时,是忽略还是更新表选项之间的差异。 |
/p:IgnoreUserSettingsObjects={True | False} | False | 指定当您发布到数据库时,是忽略还是更新用户设置选项之间的差异。 |
/p:IgnoreWhitespace={True | False} | True | 指定当您发布到数据库时,是忽略还是更新空白中的差异。 |
/p:IgnoreWithNocheckOnCheckConstraints={True | False} | False | 指定当您发布到数据库时,是忽略还是更新用于 CHECK 约束的 WITH NOCHECK 子句的值之间的差异。 |
/p:IgnoreWithNocheckOnForeignKeys={True | False} | False | 指定当您发布到数据库时,是忽略还是更新用于外键的 WITH NOCHECK 子句的值之间的差异。 |
/p:IncludeCompositeObjects={True | False} | False | 指定是否将所有复合元素作为单个发布操作的一部分包含。 |
/p:IncludeTransactionalScripts={True | False} | False | 指定当您发布到数据库时,是否在任何可能的位置使用事务性语句。 |
/p:NoAlterStatementsToChangeClrTypes={True | False} | False | 指定发布操作在存在差异时应始终删除并重新创建程序集,而不是发出 ALTER ASSEMBLY 语句。 |
/p:PopulateFilesOnFilegroups={True | False} | True | 指定当您在目标数据库中创建一个新的 FileGroup 时,是否也创建一个新文件。 |
/p:RegisterDataTierApplication={True | False} | False | 指定是否向数据库服务器注册该架构。 |
/p:RunDeploymentPlanExecutors={True | False} | False | 指定在执行其他操作时是否应运行 DeploymentPlanExecutor 参与者。 |
/p:ScriptDatabaseCollation={True | False} | False | 指定当您发布到数据库时,是忽略还是更新数据库排序规则之间的差异。 |
/p:ScriptDatabaseCompatibility={True | False} | True | 指定当您发布到数据库时,是忽略还是更新数据库兼容性之间的差异。 |
/p:ScriptDatabaseOptions={True | False} | True | 指定当您发布到数据库时,是设置还是更新目标数据库属性。 |
/p:ScriptFileSize={True | False} | False | 控制在向文件组添加文件时是否指定大小。 |
/p:ScriptNewConstraintValidation={True | False} | True | 指定在发布结束时是否将所有约束作为一个集合进行验证,从而避免 CHECK 约束或外键约束在发布操作过程中导致数据错误。如果此选项为 False,则将发布约束而不检查相应的数据。 |
/p:ScriptDeployStateChecks={True | False} | False | 指定是否在发布脚本中生成语句以验证数据库名称和服务器名称是否与数据库项目中指定的名称匹配。 |
/p:ScriptRefreshModule={True | False} | True | 指定是否在发布脚本的结尾处包含刷新语句。 |
/p:Storage={File | Memory} | Memory | 指定在生成数据库模型时如何存储元素。出于性能原因,默认值为 InMemory。对于非常大的数据库,需要文件备份的存储。 |
/p:TreatVerificationErrorsAsWarnings={True | False} | False | 指定是否将发布验证过程中出现的错误视为警告。在对目标数据库执行生成的部署计划之前,会先对该计划执行检查。计划验证将检测仅有目标的对象(如索引)丢失等问题,必须解决这些问题以进行更改。验证还检测以下情况:依赖项(如表或视图)因对复合项目的引用而存在,但未存在于目标数据库中。您可选择将验证错误视为警告以获取问题的完整列表,而不是允许发布操作在出现第一个错误时停止。 |
/p:UnmodifiableObjectWarnings={True | False} | True | 指定在无法修改的对象中发现差异(例如,如果文件的大小或路径存在差异)时是否生成警告。 |
/p:VerifyCollationCompatibility={True | False} | True | 指定是否验证排序规则兼容性。 |
/p:VerifyDeployment={True | False} | True | 指定在出现可能阻止成功发布的问题的情况下,是否应在发布前执行将停止发布操作的检查。例如,如果您具有在数据库项目中不存在的目标数据库上的外键并且在发布时将导致错误,则发布操作可能会停止。 |