2011-01-07

SQL Server 資料表空間耗用查詢

sql server使用久了,裡面的資料量越來越多,
所耗掉的硬碟空間也日益膨脹,
有些自行做記錄表,可以考慮將某區間的記錄移出或刪除,
sql server有提供單個資料表使用空間查詢-sp_spaceused
如果要將資料庫內的資料表做空間使用排序,可是用下列方式
if (select OBJECT_ID('tempdb..#DB_Spece')) IS NOT NULL Drop Table #DB_Spece
Create table #DB_Spece 
 (Name varchar(200),
  Rows int,
  Reserved varchar(200),
  Data varchar(200),
  Index_size varchar(200),
  Unused varchar(200))
exec sp_MSforeachtable "insert into #DB_Spece exec sp_spaceused '?'"

--預設以KB顯示,下列以計算為MB
select name,rows,
  reserved=(convert(integer,replace(Reserved,' KB',''))/1024),
  data=(convert(integer,replace(Data,' KB',''))/1024),
  index_size=(convert(integer,replace(Index_size,' KB',''))/1024),
  unused=(convert(integer,replace(Unused,' KB',''))/1024)
from #DB_Spece 
order by CAST(replace(Data,' KB','') as Integer) desc

沒有留言: