查詢資料庫物件所屬的filegroup及相關SQL

kitesky發表於2006-08-07
查詢了好多資料,也在網上搜尋了很久,沒有介紹這個的。最後透過研究sp_help系統儲存過程,得到了答案。[@more@]

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部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-853926/,如需轉載,請註明出處,否則將追究法律責任。

相關文章