SQL Server数据工具2010中未解决的参考错误SQL71561

时间:2013-03-15 17:19:30

标签: visual-studio-2010 sql-server-data-tools

在单一解决方案中使用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验证
  • 数据库位置选项设置为:不同的数据库,同一服务器
  • 确保项目构建顺序按逻辑排列
  • 尝试了this post
  • 的建议

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

Image showing my visual studio window with the error

3 个答案:

答案 0 :(得分:8)

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

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

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

  1. 选择dacpac文件
  2. 选择数据库位置。最常见的选项是"不同的数据库,相同的服务器"
  3. 确认数据库名称字段符合预期
  4. 清除"数据库变量"对话框中的字段。如果此字段具有值,则查询必须使用此变量而不是数据库名称

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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