Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 对对象[信息\架构][表]的未解析引用_Sql_Sql Server_Tsql_Sql Server Data Tools - Fatal编程技术网

Sql 对对象[信息\架构][表]的未解析引用

Sql 对对象[信息\架构][表]的未解析引用,sql,sql-server,tsql,sql-server-data-tools,Sql,Sql Server,Tsql,Sql Server Data Tools,我已经创建了一个UDF,可以访问[INFORMATION\u SCHEMA].[TABLES]视图: CREATE FUNCTION [dbo].[CountTables] ( @name sysname ) RETURNS INT AS BEGIN RETURN ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @name ); END 在Visual Stu

我已经创建了一个UDF,可以访问
[INFORMATION\u SCHEMA].[TABLES]
视图:

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
,而不是此视图,但对于此视图,我也收到了相同的警告


如何解决此警告?

将数据库引用添加到
master

  • 在项目下,在“参照”上单击鼠标右键
  • 选择添加数据库引用
  • 选择系统数据库
  • 确保已选择“主控”
  • 按OK

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

    山姆所说的是最好的方法。
    但是,如果您需要从特定位置没有该引用的机器上部署dacpac,那么您可能会遇到麻烦。 另一种方法是打开.project文件,并确保以下标记对于您尝试运行的生成配置的值为
    false

    <TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>
    
    false
    

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

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

    SQL71502: Procedure: [Schema].[StoredProc1] has an unresolved reference to object [Schema].[Table1].[Property1].
    
    要解决引用错误,请在表sql文件上, 右键单击属性并验证BuildSettings是否设置为Build


    更改它构建修复了它。

    还有一个警告-如果任何人将这些SSDT安装在不同的路径中,您可能会遇到问题。我们在上一个项目中遇到了这个问题,其中一些有E:drive,而另一些只有C:drive。我们复制了该引用文件,并将其放在共享位置,以便通过。\SharedSchemas\master.dacpac引用它。这可能已经解决了,但在第一个版本中是一个问题。通常,将引用的dacpac文件复制到解决方案中的某个位置并从那里使用是一个好主意。对我来说,它表示“您的项目中已经存在对该系统数据库的引用。”我现在被卡住了!只是为了让下一个人保持理智——相信它,甚至不退出VS都不足以让这一切继续下去——我不得不重新启动,然后设置开始工作。您可能还希望打开Visual Studio选项。。。SQL Server工具。。。在线编辑。。。启用“解析对系统视图和主数据库对象的引用”。我在Visual Studio 2017中遇到了同样的问题,在引用列表下没有看到“数据库引用”。这应该是最后的手段,因为您会丢失对sql错误的反馈!在VS2019年,我遇到了一个数据库项目的问题,该项目最初建于2017年。为了修复它,我必须删除并重新添加对“master”的引用