即使有数据,MSSQL 查询也不起作用

即使有数据,MSSQL 查询也不起作用

尝试在 MS SQL 服务器上运行更复杂的 SQL 查询,但没有数据输出。从逻辑上讲应该没问题,但我不明白为什么它不起作用:

SELECT D.NAME DATABASE_NAME,T.NAME TABLE_NAME,I.NAME INDEX_NAME,C.NAME COLUMN_NAME FROM sys.dm_db_index_physical_stats (NULL, NULL, NULL , NULL, 'LIMITED') XXX INNER JOIN SYS.DATABASES D ON D.DATABASE_ID = XXX.DATABASE_ID INNER JOIN SYS.TABLES T ON T.OBJECT_ID = XXX.OBJECT_ID INNER JOIN SYS.INDEXES I ON I.OBJECT_ID = T.OBJECT_ID INNER JOIN SYS.INDEX_COLUMNS IC ON IC.OBJECT_ID = I.OBJECT_ID INNER JOIN SYS.COLUMNS C ON C.OBJECT_ID = IC.OBJECT_ID ORDER BY D.NAME, T.NAME

如果我运行SELECT * FROM sys.dm_db_index_physical_stats (NULL, NULL, NULL , NULL, 'LIMITED'),我会得到正确的数据,所以其他查询应该可以工作,但仍然不行。

有任何想法吗?

答案1

我想象您正在主系统中运行它。sys.dm_db_index_physical_stats 报告在全局级别,其他表在数据库级别。

你可以通过 USE 并执行以下命令来确认应该查看返回的数据。您可能还想使用 sp_msforeachDB (http://weblogs.sqlteam.com/joew/archive/2008/08/27/60700.aspx) 在每个数据库中执行代码。

相关内容