为什么当我尝试运行时:
SELECT * FROM [servername].master.sys.dm_os_volume_stats(1, 1) AS btb (NOLOCK)
我得到错误:
Msg 195, Level 15, State 15, Line 45
'servername.master.sys.dm_os_volume_stats' is not a recognized function name.
当我在服务器中运行它时(例如:servername),我得到了不同的错误:
SELECT * FROM master.sys.dm_os_volume_stats(1, 1) AS btb (NOLOCK)
Msg 317, Level 16, State 1, Line 1
Table-valued function 'dm_os_volume_stats' cannot have a column alias.
但如果我删除它不会出错AS btb (NOLOCK)
我的目标是从链接服务器查询并获得每个服务器的可用磁盘空间(使用联合)。以下是查询的一部分:
FROM [servername].[master].sys.master_files AS f WITH(NOLOCK)
CROSS APPLY sys.dm_os_volume_stats(f.database_id, f.file_id)
但我仍在寻找有关 TVF 问题的解决方案。
只需使用直通查询。并摆脱 NOLOCK (它甚至在这里什么都不做,因为目录总是使用锁定读取提交语义读取)。
例如
或者