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

Sam*_*Sam 90 sql t-sql sql-server 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

我该如何解决此警告?

Sam*_*Sam 165

添加数据库引用master:

  1. 在该项目下,右键单击" 引用".
  2. 选择添加数据库引用....
  3. 选择系统数据库.
  4. 确保选择了master.
  5. 确定.

请注意,VS可能需要一段时间才能更新.

  • 只是一个警告 - 如果有人在不同的路径上安装了这些SSDT,那么你可能会遇到问题.我们在上一个项目中碰到了这个问题,其中一些项目有E:驱动器,其他项目只有C:驱动器.我们复制了该参考文件并将其放在共享位置,以便我们可以通过.\ SharedSchemas\master.dacpac引用它.这可能现在已经解决,但在第一个版本中是一个问题. (6认同)
  • 对我来说,它说“您的项目中已存在对此系统数据库的引用。” 我现在被困住了! (2认同)

Rus*_*l D 6

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

SQL71502: Procedure: [Schema].[StoredProc1] has an unresolved reference to object [Schema].[Table1].[Property1].
Run Code Online (Sandbox Code Playgroud)

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

更改它的构建修复了它。