Por que quando tento executar:
SELECT * FROM [servername].master.sys.dm_os_volume_stats(1, 1) AS btb (NOLOCK)
Eu recebo erro:
Msg 195, Level 15, State 15, Line 45
'servername.master.sys.dm_os_volume_stats' is not a recognized function name.
E quando executo no servidor (ex: servername), recebo um erro diferente:
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.
Mas não dá erro se eu remover oAS btb (NOLOCK)
Meu objetivo é consultar um servidor vinculado e obter espaço livre em disco para cada servidor (usando união). Segue parte da consulta:
FROM [servername].[master].sys.master_files AS f WITH(NOLOCK)
CROSS APPLY sys.dm_os_volume_stats(f.database_id, f.file_id)
Mas ainda estou procurando uma solução para o problema dos TVFs.
Basta usar uma consulta de passagem. E livre-se do NOLOCK (ele nem faz nada aqui, pois o catálogo é sempre lido com a semântica confirmada de leitura de bloqueio).
POR EXEMPLO
ou