Sql 对对象[信息\架构][表]的未解析引用
我已经创建了一个UDF,可以访问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
[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
:
请注意,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”的引用