[MSSQL]如何取得某資料庫裡的table空間使用狀況

有關資料庫的討論, 都可以在這發表哦~~
回覆文章
頭像
tim
文章: 1288
註冊時間: 2008年 11月 26日, 00:49

[MSSQL]如何取得某資料庫裡的table空間使用狀況

文章 tim » 2008年 11月 28日, 17:15

利用 sp_MSforeachtable 配合操作, 指令如下,

代碼: 選擇全部

create table #used_table
( name nvarchar(255),
 rows int,
 reserved nvarchar(255),
 data nvarchar(255),
 index_size nvarchar(255),
 unused nvarchar(255)
)

EXEC sp_MSforeachtable
@command1 = "insert into #used_table exec sp_spaceused '?'"

select * from #used_table
drop table #used_table


由於帶出來的資料是文字, 不方便排序, 再加上一點功能, 帶出以 kb 為單位的使用空間欄位, 方便排序並列表,

代碼: 選擇全部

create table #used_table
( name nvarchar(255),
 rows int,
 reserved nvarchar(255),
 data nvarchar(255),
 index_size nvarchar(255),
 unused nvarchar(255)
)

EXEC sp_MSforeachtable
@command1 = "insert into #used_table exec sp_spaceused '?'"

select * from #used_table

create table #used_table2
( name nvarchar(255),
 rows int,
 reserved_KB int,
 data_KB int,
 index_size_KB int,
 unsed_KB int
)

insert into #used_table2 select name, rows, replace(reserved, ' KB', ''), replace(data, ' KB', ''), replace(index_size, ' KB', ''), replace(unused, ' KB', '') from #used_table
select * from #used_table2 

drop table #used_table
drop table #used_table2
多多留言, 整理文章, 把經驗累積下來.....

頭像
tim
文章: 1288
註冊時間: 2008年 11月 26日, 00:49

Re: [MSSQL]如何取得某資料庫裡的table空間使用狀況

文章 tim » 2009年 12月 3日, 11:56

其中各欄位的說明如下:

name 資料表名稱
rows 資料表內的資料筆數
reseved_KB 該表的總大小
data_KB 該表的資料存放佔用大小
index_size_KB 該表的索引佔用大小
unused_KB 該表的未使用空間

所以 reserved_KB = data_KB + index_size_KB + unused_KB 三項的值
多多留言, 整理文章, 把經驗累積下來.....

回覆文章