SSDT与DB项目引用抛出奇怪的编译错误

时间:2013-04-25 01:33:24

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

我有一个包含2个SSDT数据库项目的解决方案,一个引用另一个。在其中一个存储过程中,我有一个简单的更新语句,如下所示:

update [$(otherDb)]..OtherTable set TheField = @value where OtherTable.Id = @id

我有很多存储过程在其他表上执行相同的操作,这个存储过程已经工作了好几个月,甚至智能感知甚至能够显示表的所有列。即便如此,我仍然会收到错误

SQ71561: Procedure [dbo].[MyProcedure] has an unresolved reference to object [$(otherDb)].[dbo].[OtherTable].[TheField]

任何机构都有任何想法发生了什么?

3 个答案:

答案 0 :(得分:0)

删除DBML文件并重建项目

答案 1 :(得分:0)

  1. 确保下划线视图不使用SELECT *
  2. 删除参考并再次添加数据库参考,选择检查按钮抑制警告....
  3. 重建项目 - 应该解决它

答案 2 :(得分:0)

这是Jony Lalwani。

我安装了Visual Studio 2017,它的SSDT版本为15.1。我在脚本中检查了变量[$(DATABASE)]的用法,下面是观察结果 -

1-存储过程,表值函数&如果使用DB.dbo.Table而不是[$(DB)],则标量函数将仅抛出未解析的引用警告.dbo.Table。因此,即使我们不使用变量,构建在这些脚本中也是成功的。 2-按设计内联功能&如果我们使用DB.dbo.Table而不是[$(DB)],则视图将抛出未解析的引用错误.dbo.Table。因此,在这些脚本中,需要变量引用。

以上两点对Visual Studio 2013 SSDT(12.0)也有效,并且它的工作方式也相同。但是,当我们从SQL数据库导入或更新架构时,VS 2013 SSDT有时会在存储过程中抛出未解析引用的多个错误。这是由于2013年SSDT的漏洞造成的。