3

在单个解决方案中将 SSDT 2010(最新更新,v10.3.21208.0)与多个数据库项目一起使用时出现错误。错误内容如下:

SQL71561: View: [dbo].[View] has an unresolved reference to object [OtherDatabase].[dbo].[OtherTable]

我已经阅读了可以在 Stack Overflow 和 Google 上找到的所有其他资源。以下是我已经尝试过的一些事情:

  • 设置对解决方案中其他项目的数据库引用。
  • 清除数据库变量选项以绕过根据配置选项动态更改数据库名称的 SQLCLR 变量。
  • 确保在所有项目上禁用为公共对象启用扩展 Transact-SQL 验证
  • 数据库位置选项设置为:不同的数据库,相同的服务器
  • 确保项目构建顺序合理安排
  • 尝试了这篇文章的建议

似乎没有什么对我有用。任何帮助将非常感激。这是一个屏幕截图,可能会更清楚地说明我的问题:

显示我的 Visual Studio 窗口的图像有错误

4

3 回答 3

8

已经有一段时间了,但我仍然想与其他可能正在关注我最初丢失的链接的其他人分享这个解决方案。密切注意第 4 步。这为我解决了问题。

一种可能的解决方案是向具有缺失对象的数据库添加数据库引用。该引用需要一个数据层应用程序(dacpac 文件),该应用程序可以在解决方案上轻松生成,该解决方案具有缺少对象的数据库项目。在数据库项目上按鼠标右键并选择快照项目。dacpac 文件是在 Snapshots 文件夹中创建的。然后应将该文件复制到一个公共文件夹以供重复使用。

在出现错误的项目中,在 References 上按鼠标右键并选择Add Database Reference. 出现Add Database Reference对话框:

  1. 选择 dacpac 文件
  2. 选择数据库位置。最常见的选项是“不同的数据库,相同的服务器”
  3. 确认数据库名称字段与预期一致
  4. 清除对话框中的“数据库变量”字段。如果此字段具有值,则查询必须使用此变量而不是数据库名称
于 2015-03-11T17:38:06.217 回答
1

如果引用的数据库项目已构建,但引用未解析,请尝试清理并重建引用的项目并清理执行引用的项目。

于 2013-04-05T03:18:00.647 回答
0

我正在使用 VS2015,但它可能仍然适用。在我的例子中,引用的数据库在引用属性中指定了一个“数据库变量名称”,例如$(SomeDb). 如果有人试图使用实际数据库名称而不是变量来引用引用数据库中的项目,我们会收到有关未解析引用的警告。将那些更改为像[$(SomeDb)].[dbo].[SomeTable]解决了引用。

于 2017-06-14T16:45:30.093 回答