数据库项目 - “无法解析对来自名为 x 的源的外部元素的引用

Posted

技术标签:

【中文标题】数据库项目 - “无法解析对来自名为 x 的源的外部元素的引用【英文标题】:Database Project - "Reference to external elements from the source named x could not be resolved 【发布时间】:2012-07-09 07:52:30 【问题描述】:

我们有两个数据库项目,xx_auditx 引用了 x_audit

x_audit 部署正常,但尝试部署 x 时出现错误:

The reference to external elements from the source named x_audit.dbschema could not be resolved, because no such source is loaded.

相同的文件在部署到 2005 数据库时工作正常,但在部署到 2008 时我们只会收到此错误。如果有任何不同,这是升级现有数据库而不是创建新数据库。它曾经在 2005 年和 2008 年都可以正常工作,不知道发生了什么变化。

谢谢

【问题讨论】:

我们暂时通过删除引用解决了这个问题。我们在构建项目时收到了很多警告,但至少您仍然可以从中进行部署 【参考方案1】:

添加数据库引用时,选中“Suppress error caused by unresolved references in the referenced project”复选框。

关于“外部元素”的模糊语言意味着 x_audit 也引用了某些东西。而那个东西没有被 x 引用,所以 x 不知道它。

【讨论】:

【参考方案2】:

如果您有一个引用外部数据库 dacpac “B”的数据库“A”,则需要在项目中包含来自“B”的所有必要引用,否则“A”将无法构建。或者,您可以将抑制未解析的引用设置为 True,编译器将忽略丢失的引用。

如果您的数据库之间存在循环引用,则必须抑制未解析的引用。

【讨论】:

你是说如果我有一个包含两个数据库项目 A 和 B 的解决方案,其中 B 引用了 dacpac 的 C、D 和 E(并且 B 构建得很好)而 A 有对 B 的引用,那么我还必须在 A 项目中包含对 C、D 和 E dacpac 的引用?? @MikeK - 你有两个选择。 1) 包括 B 引用项目 A 的其他数据库的 DACPAC。2) 在项目 A 中将“抑制引用”选项设置为 true。 我确实这样做了,而且效果很好。在我看来,这些项目不能真正分开,这让我感到莫名其妙。感谢您的帮助。 那个循环依赖的事情让我很困惑,感谢您指出这一点。有什么想法/经验表明,如果抑制这些错误会反过来咬人?

以上是关于数据库项目 - “无法解析对来自名为 x 的源的外部元素的引用的主要内容,如果未能解决你的问题,请参考以下文章

部署另一个数据库项目后如何自动启动VS数据库项目的部署

Java 两个项目之间如何传数据

Visual Studio数据库版中的“数据库项目”和“服务器项目”之间有什么区别?

SSDT 数据库解决方案中的重复项目引用

为啥我的数据库项目升级脚本包括从引用的数据库项目中重构?

如何覆盖数据库中的项目而不是创建新项目