未解析的对象引用[INFORMATION_SCHEMA]。[TABLES]

时间:2013-08-07 06:21:57

标签: sql sql-server tsql sql-server-data-tools

我创建了一个访问[INFORMATION_SCHEMA].[TABLES]视图的UDF:

CREATE FUNCTION [dbo].[CountTables]
(
    @name sysname
)
RETURNS INT
AS
BEGIN
    RETURN
    (
        SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @name
    );
END

在Visual Studio中,视图的架构和名称都标有警告:

  

SQL71502:函数:[dbo]。[CountTables]对象[INFORMATION_SCHEMA]有一个未解析的引用。[TABLES]。

我仍然可以毫无问题地发布数据库项目,UDF确实可以正常运行。 IntelliSense为我填充了视图的名称,因此它似乎没有问题。

我还尝试将实现更改为使用sys.objects而不是此视图,但我也对此视图发出了相同的警告。

如何解决此警告?

3 个答案:

答案 0 :(得分:151)

master添加数据库引用:

  1. 在项目下,右键单击参考
  2. 选择添加数据库引用...
  3. 选择系统数据库
  4. 确保选中
  5. 确定
  6. 请注意,VS可能需要一段时间才能更新。

答案 1 :(得分:3)

在我们的项目中,我们已经有了对master的引用,但是我们遇到了这个问题。这是我们得到的错误:

SQL71502: Procedure: [Schema].[StoredProc1] has an unresolved reference to object [Schema].[Table1].[Property1].

要解决表sql文件中的引用错误, 右键单击属性并验证BuildSettings是否设置为Build。

更改它构建修复它。

答案 2 :(得分:2)

山姆所说的是做这件事的最佳方式。
但是,如果您有一个场景需要从在该特定位置没有该引用的计算机上部署dacpac,则可能会遇到麻烦。 另一种方法是打开.project文件,并确保以下标记的值为false,用于您尝试运行的构建配置。

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

这样您就不需要添加对项目的引用。