0

我有一个包含 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]

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

4

3 回答 3

0

删除 DBML 文件并重建项目做到了

于 2013-04-25T01:41:26.450 回答
0

这是乔尼·拉尔瓦尼。

我已经安装了 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 中的错误造成的。

于 2017-09-07T10:57:32.833 回答
0
  1. 确保下划线视图不使用 SELECT *
  2. 删除引用并再次添加数据库引用,选择复选按钮 Suppress Warning...。
  3. 重建项目-应该解决它
于 2016-05-31T14:57:41.857 回答