如何指定Octopus Deploy部署时需排除的数据库Schema?
如何在Visual Studio数据库项目中排除指定Schema不通过Octopus Deploy部署
针对你遇到的这个场景——要保留自动生成的Schema满足构建依赖,但不让Octopus把它部署到目标环境,我有几个实用的解决方案:
方案1:修改项目对象的部署属性(最直接)
这是无需额外配置Octopus的方法,直接在VS项目里操作:
- 在你的数据库项目中,找到那个自动生成Schema下的所有对象(表、存储过程等),包括Schema本身的定义文件
- 选中这些文件,右键打开属性面板
- 将
Build Action从默认的Build改为None - 同时把
Deploy Action设置为Do Not Deploy
这样设置后,项目构建时依然会校验该Schema的依赖关系,但生成的部署包不会包含这些对象,Octopus自然也就不会部署它们了。
方案2:在Octopus部署步骤中添加过滤参数
如果不想改动VS项目的配置,也可以在Octopus这边做过滤:
- 打开你的Octopus部署项目,找到对应的数据库部署步骤
- 进入步骤的配置页面,找到
Additional Arguments(额外参数)输入框 - 添加以下SQLCMD参数(替换
YourSchemaName为你要排除的Schema名称):
这个参数会告诉SqlPackage.exe(VS数据库项目部署的底层工具)跳过指定Schema下的所有对象,达到排除部署的效果。/p:ExcludeObjects=YourSchemaName.*
方案3:拆分项目(适合长期维护)
如果这个自动生成的Schema和你的业务代码完全独立,可以考虑拆分项目:
- 将自动生成的Schema单独创建一个新的Visual Studio数据库项目
- 原项目通过数据库引用功能依赖这个新项目,确保构建时的依赖校验正常
- 在Octopus部署时,只部署原项目的发布包,不部署拆分出来的那个Schema项目包
这三个方案各有优劣,你可以根据自己项目的实际情况选择最适合的方式。
内容的提问来源于stack exchange,提问作者istuc
相关产品推荐
相关产品推荐

