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

我创建了一个访问sys.objects视图的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而不是此视图,但我也对此视图给出了相同的警告。

我该如何解决此警告?

Sam asked 2019-09-10T06:03:18Z
3个解决方案
150 votes

添加数据库引用master

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

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

Sam answered 2019-09-10T06:04:14Z
3 votes

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

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

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

改变它构建固定它。

Russell D answered 2019-09-10T06:04:51Z
2 votes

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

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

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

tecfield answered 2019-09-10T06:05:29Z
translate from https://stackoverflow.com:/questions/18096029/unresolved-reference-to-object-information-schema-tables