如何在DevOps发布流水线中使用sqlpackage.exe忽略指定Schema变更
解决方案
要在SqlPackage.exe执行DACPAC部署时忽略指定Schema的变更,可通过以下两种可行方案实现:
方案1:直接通过命令行参数配置(适用于简单场景)
新版SqlPackage(v160及以上版本)内置了SchemaExclusionList参数,可直接指定要忽略的Schema,多个Schema用分号分隔即可,示例命令如下:
SqlPackage.exe /Action:Publish /SourceFile:"你的部署包路径/xxx.dacpac" /TargetConnectionString:"目标数据库连接字符串" /p:SchemaExclusionList="需要忽略的Schema1;需要忽略的Schema2"
所有在SchemaExclusionList列表内的Schema,其下所有对象的新增、修改、删除操作都会被部署流程忽略。
方案2:通过发布配置文件配置(适用于复杂规则、流水线复用场景)
如果需要复用排除规则,或者要配合可视化发布界面配置,可直接在DACPAC的.publish.xml发布配置文件中添加规则:
- 打开你截图中的部署界面,点击「高级」按钮,在「忽略」选项卡中找到Schema排除配置项,填入需要忽略的Schema后保存配置文件
- 在SqlPackage命令中直接引用该配置文件即可,示例命令如下:
SqlPackage.exe /Action:Publish /SourceFile:"你的部署包路径/xxx.dacpac" /Profile:"你的配置文件路径/xxx.publish.xml"
注意事项
- 若你使用的SqlPackage版本较低不支持
SchemaExclusionList参数,先升级到最新版SqlPackage即可支持该配置 - 如果需要仅忽略指定Schema下的特定对象类型,可搭配
ExcludeObjectTypes参数使用,比如仅忽略指定Schema下的存储过程变更,可追加参数/p:ExcludeObjectTypes="StoredProcedures"
内容的提问来源于stack exchange,提问作者Sindu_
相关产品推荐
相关产品推荐

