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

Posted

技术标签:

【中文标题】对对象 [INFORMATION_SCHEMA].[TABLES] 的未解决引用【英文标题】:unresolved reference to object [INFORMATION_SCHEMA].[TABLES] 【发布时间】:2021-01-22 09:32:57 【问题描述】:

我创建了一个访问 [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 而不是此视图,但我也收到了针对此视图的相同警告。

我该如何解决这个警告?

【问题讨论】:

【参考方案1】:

添加对master的数据库引用:

    在项目下,右键单击References。 选择添加数据库引用...。 选择系统数据库。 确保选择了 master。 按确定

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

【讨论】:

只是一个警告 - 如果有人将这些 SSDT 安装在不同的路径中,您可能会遇到问题。我们在上一个项目中遇到了这个问题,其中一些有一个 E:驱动器,而另一些只有一个 C:驱动器。我们复制了该参考文件并将其放在共享位置,以便我们可以通过 .\SharedSchemas\master.dacpac 引用它。现在可能已经解决了,但在第一个版本中是一个问题。 Peter Schott 有一个观点。通常最好将引用的 dacpac 文件复制到解决方案中的某处并从那里使用。 对我来说,它说“您的项目中已经存在对此系统数据库的引用。”我现在卡住了! 只是为了让下一个人节省一些理智-相信它或者甚至不退出VS都不足以让它坚持下去-我不得不重新启动,然后设置开始工作。您可能还希望打开 Visual Studio 选项...SQL Server 工具...在线编辑...启用“解析对系统视图和主数据库对象的引用”。 我在 Visual Studio 2017 下遇到了同样的问题,我在参考列表下看不到“数据库参考”【参考方案2】:

Sam 说的是最好的方法。 但是,如果您需要从在该特定位置没有该引用的机器部署 dacpac,您可能会遇到麻烦。 另一种方法是打开您的 .project 文件,并确保以下标记具有您尝试运行的构建配置的 false 值。

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

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

【讨论】:

这应该是不得已而为之,因为你会丢失关于 sql 错误的反馈!【参考方案3】:

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

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

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

更改它构建修复它。

【讨论】:

在 VS 2019 中,我在最初于 2017 年构建的数据库项目中遇到了这个问题。要修复它,我必须删除并重新添加对“master”的引用【参考方案4】:

我使用的是 VS 2019,即使在添加主数据库引用后仍然出现此问题。通过更改数据库项目的目标平台解决了这个问题,如下图所示。在此更改后,我不得不再次删除并重新添加主数据库。

【讨论】:

以上是关于对对象 [INFORMATION_SCHEMA].[TABLES] 的未解决引用的主要内容,如果未能解决你的问题,请参考以下文章

可以对 information_schema 崩溃表进行 mysql 查询吗?

拒绝访问 MariaDB 中的 information_schema

十分钟了结MySQL information_schema

(转)十分钟了结MySQL information_schema

MySQL 5.7 INFORMATION_SCHEMA 详解

DQL 数据查询语言 IS (information_schema)