全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1077
推到 Plurk!
推到 Facebook!

如何在SQL Server中將某資料庫的table使用磁碟空間列出

 
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-17 13:53:23 IP:203.95.xxx.xxx 未訂閱
在 MS SQL SERVER 中, 雖然 enterprise 的介面可以利用工作清單將所有的 table 空間使用狀況列出, 但仍然不是很方便, 若能將這些資料導入 temp table, 並進一步排序, 或找出特定某 table 的使用狀況, 若是要一筆一筆利用 sp_spaceused table_name 的方式, 相當不方便, 若能一次帶出的話, 相信能更快找出使用空間大的 table.    使用方式, 利用 sp_spaceused, sp_MSforeachTable 兩個 stored procedure 即可, script 如下,    
use database_name    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    
若要數字的資料, 可以用 #used_table2, 若只是要 display 的資料, 直接用 #used_table 即可!!
系統時間:2024-07-02 3:13:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!