我创建了一个访问[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
Run Code Online (Sandbox Code Playgroud)
在Visual Studio中,视图的模式和名称都标有警告:
SQL71502:函数:[dbo].[CountTables]有一个未解析的对象[INFORMATION_SCHEMA]的引用.[TABLES].
我仍然可以毫无问题地发布数据库项目,并且UDF似乎确实正确运行.IntelliSense为我填充了视图的名称,因此它似乎没有问题.
我也尝试将实现更改为使用sys.objects而不是使用此视图,但我也对此视图给出了相同的警告.
我该如何解决此警告?
遇到一个奇怪的问题。假设一个空解决方案中有两个数据库项目:Bart 和 Homer。巴特已被添加为荷马的数据库参考。
Bart项目定义了一个函数:
CREATE FUNCTION [dbo].[Message]()
RETURNS NVARCHAR(255)
AS
BEGIN
RETURN 'I am a value returned from another database'
END
Run Code Online (Sandbox Code Playgroud)
然后Homer项目定义了一个表:
CREATE TABLE [dbo].[Messages]
(
[Id] INT NOT NULL PRIMARY KEY
)
Run Code Online (Sandbox Code Playgroud)
和一个视图:
CREATE VIEW [dbo].[MessagesV]
AS SELECT Id, Bart.dbo.Message() AS [Message]
FROM dbo.Messages
Run Code Online (Sandbox Code Playgroud)
当尝试构建时,我收到以下错误:
Error 2 SQL71501: Computed Column: [dbo].[MessagesV].[Message]
contains an unresolved reference to an object. Either the object does
not exist or the reference is ambiguous because it could refer to any
of the following objects: …Run Code Online (Sandbox Code Playgroud)