在compatibility_level“80”中为数据库发出DMV问题

时间:2015-02-27 12:55:38

标签: sql sql-server tsql

我在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
  '附近的语法不正确。'。

我无法更改兼容模式,我不知道如何从master db的上下文为我的数据库运行此特定脚本。

2 个答案:

答案 0 :(得分:0)

在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。这些表不一定包含相同的列.....

答案 1 :(得分:0)

"交叉申请"在早期版本的SQL中以及在旧兼容性模型中运行的数据库中不允许使用。