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


99

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

如何解决此警告?

Answers:


180

将数据库引用添加到master

  1. 在项目下,右键单击“ 引用”
  2. 选择添加数据库引用...
  3. 选择系统数据库
  4. 确保已选择主机
  5. 确定

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


6
这只是一个警告-如果有人在其他路径上安装了那些SSDT,则可能会遇到问题。我们在上一个项目中遇到了该问题,其中一些驱动器具有E:驱动器,而其他驱动器仅具有C:驱动器。我们复制了该参考文件并将其放在共享位置,以便我们可以通过。\ SharedSchemas \ master.dacpac对其进行参考。现在可能已经解决了,但是在第一个版本中是一个问题。
彼得·肖特

彼得·肖特(Peter Schott)在这里有一个要点。通常,将引用的dacpac文件复制到解决方案内部的某个地方并从那里使用是个好主意。
Veysel Ozdemir 2014年

1
对我来说,它说:“您的项目中已经存在对该系统数据库的引用。” 我现在被卡住了!
orad 2015年

1
只是为了让下一个人节省一些理智-信不信由你甚至不退出VS不足以使它坚持下去-我不得不重新启动,然后设置开始起作用。您可能还希望打开Visual Studio选项... SQL Server工具...在线编辑...启用“解析对系统视图和主数据库对象的引用”。
NYCdotNet

我在Visual Studio 2017下遇到相同的问题,并且在参考列表下看不到“数据库参考”
Scarl

3

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

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

若要解决参考错误,请在表sql文件上,右键单击属性,然后将BuildSettings设置为Build。

更改它会修复它。


2

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

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

这样,您无需为项目添加引用。


13
这应该是万不得已的方法,因为您会丢失有关SQL错误的反馈!
Jowen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.