compatibility_level“80”中数据库的 DMV 问题

DMV issues for databases in compatibility_level "80"

我在 compatibility_level 中有 80 个数据库(SQL Server 2000); 我需要执行以下操作:

select 
    sf.fileid, sf.groupid, sf.name, sf.filename, mf.database_id 
from 
    sys.sysfiles sf
JOIN 
    sys.master_files mf ON sf.filename = mf.physical_name COLLATE DATABASE_DEFAULT
CROSS APPLY 
    sys.dm_os_volume_stats (mf.database_id, sf.fileid)

但是我收到以下错误:

Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '.'.

我无法更改兼容模式,我不知道如何从主数据库的上下文中运行我的数据库的这个特定脚本。

在 SQL Server 2000 中没有 'sys' 文件。许多有等价物,你可以在以下位置看到一个很好的图表:

http://www.mssqltips.com/sqlservertip/1037/system-information-in-sql-server-2000-vs-sql-server-2005/

例如在 2000 年有 dbo.sysfiles 但没有 sys.sysfiles。这些表不一定包含相同的列.....

"CROSS APPLY" 在 SQL 的早期版本中以及在较旧的兼容性模型中的数据库 运行 中是不允许的。