在sysobjects系统表中,没有filegroup信息,只有sysindexes表中有groupid字段。当在SQL Server中新建一个表时,即使没有建立任何Index,系统都会为这个表在sysindexes生成一条记录。利用这个特性,用一下SQL可以查询出Table所在的filegourp信息:
SELECT
Data_located_on_filegroup = fg.groupname,
Table_name = obj.name
FROM sysfilegroups fg, sysindexes idx, sysobjects obj
WHERE idx.id = obj.id
AND obj.type in ('S ','U ')
AND idx.indid < 2
AND idx.groupid = fg.groupid
ORDER BY fg.groupname
-- 查询数据库的基本信息,包括有数据文件和日志文件
sp_helpdb plannet
-- 查询系统的文件组信息
select * from sysfilegroups sp_helpfilegroup
-- 查询编号为@id的对象的文件组信息
exec sp_objectfilegroup @id
-- 查询所有表的文件组信息
SELECT
Data_located_on_filegroup = fg.groupname,
Table_name = obj.name
FROM sysfilegroups fg, sysindexes idx, sysobjects obj
WHERE idx.id = obj.id
AND obj.type in ('S ','U ')
AND idx.indid < 2
AND idx.groupid = fg.groupid
ORDER BY fg.groupname
-- 检查指定文件组中的所有表(在当前数据库中)的分配和结构完整性
DBCC CHECKFILEGROUP
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/66009/viewspace-853926/ ,如需转载,请注明出处,否则将追究法律责任。