2013-04-25 69 views
0

我有一个解决方案与2个SSDT数据库项目,一个引用另一个。在一个存储过程我有一个看起来像下面这样一个简单的更新语句:SSDT与DB项目引用抛出奇怪的编译错误

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

我有做其他表这个非常相同的操作很多存储过程,这个存储过程已经工作了许多个月甚至可以显示表格的所有列。即使我仍然有一个错误说

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

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

回答

0

删除DBML文件和重建项目做了

0
  1. 确保下划线视图不使用SELECT *
  2. 取出参考,并再次添加数据库引用,选中按钮取消警告.. ..
  3. 重建应该解决这个问题
0

这是强尼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中的错误。