You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SqlPackage发布时未部署被引用DAC包,IncludeCompositeObjects参数未生效

问题根因

你配置的数据库项目引用属于外部数据库引用,而非复合项目引用,因此IncludeCompositeObjects参数不会触发独立依赖库的部署:

  • 你在ProjectReference节点中添加了<DatabaseSqlCmdVariable>Dependency</DatabaseSqlCmdVariable>配置,该配置的作用是明确告知DacFX,当前引用指向同一个实例下的另一个独立数据库,所有依赖项目的对象都属于[$(Dependency)]这个独立库。DacFX解析该dacpac仅为了校验主项目中跨库引用的合法性,不会将其视为需要部署的对象,这也是日志显示依赖包已解析,但部署脚本无相关内容的核心原因。

IncludeCompositeObjects参数的实际作用

该参数仅针对复合项目引用生效:
当你的项目引用没有配置DatabaseSqlCmdVariable属性时,依赖项目会被视为主项目的一部分,所有对象会直接合并到主项目的dacpac中。IncludeCompositeObjects开关用于控制发布主库时,是否将这些合并进来的依赖对象也同步部署到目标库(默认值为false,仅部署主项目本身的对象)。这种场景下最终只会生成一个数据库,不存在独立的Dependency库。


解决方案

根据你的实际需求选择对应方案:

方案1:需要保留两个独立数据库

IncludeCompositeObjects不支持该场景,必须单独部署两个dacpac,部署顺序为先发布Dependency.dacpac,再发布Dependent.dacpac,发布主库时正确传入Dependency参数即可。

方案2:不需要独立的Dependency库,所有对象合并到Dependent库

修改项目引用配置:

  1. 删除ProjectReference节点中的<DatabaseSqlCmdVariable>Dependency</DatabaseSqlCmdVariable>配置
  2. 删除对应的SqlCmdVariable节点配置
  3. 重新编译解决方案后再次执行发布命令,此时开启IncludeCompositeObjects=true即可将两个项目的所有对象部署到同一个Dependent数据库中。

内容的提问来源于stack exchange,提问作者Alexander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:24:02