Why does when I try to run:
SELECT * FROM [servername].master.sys.dm_os_volume_stats(1, 1) AS btb (NOLOCK)
I get error:
Msg 195, Level 15, State 15, Line 45
'servername.master.sys.dm_os_volume_stats' is not a recognized function name.
And when I run it in the server (ex: servername), I get different error:
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.
But it gets no error if I removed the AS btb (NOLOCK)
My goal is to query from a linked server and get free disk space for each server (using union). Below is part of the query:
FROM [servername].[master].sys.master_files AS f WITH(NOLOCK)
CROSS APPLY sys.dm_os_volume_stats(f.database_id, f.file_id)
But Im still looking for a solution for the issue regarding TVFs.
Best Answer
Just use a passthrough query. And get rid of NOLOCK (it doesn't even do anything here as the catalog is always read with locking read committed semantics).
EG
or