--drop table #spt_space
go
IF OBJECT_ID('tempdb..#tmp','U') IS NOT NULL
drop table #tmp
go
IF OBJECT_ID('tempdb..#spt_space','U') IS NOT NULL
drop table #spt_space
go
declare @id int
declare @type character(2)
declare @pages int
declare @dbname sysname
declare @dbsize dec(15,0)
declare @bytesperpage dec(15,0)
declare @pagesperMB dec(15,0)
create table #spt_space
(
objid int null,
rows int null,
reserved dec(15) null,
data dec(15) null,
indexp dec(15) null,
unused dec(15) null
)
set nocount on
-- Create a cursor to loop through the user tables
declare c_tables cursor for
select id
from sysobjects
where xtype = 'U'
open c_tables
fetch next from c_tables
into @id
while @@fetch_status = 0
begin
/* Code from sp_spaceused */
insert into #spt_space (objid, reserved)
select objid = @id, sum(reserved)
from sysindexes
where indid in (0, 1, 255)
and id = @id
select @pages = sum(dpages)
from sysindexes
where indid < 2
and id = @id
select @pages = @pages + isnull(sum(used), 0)
from sysindexes
where indid = 255
and id = @id
update #spt_space
set data = @pages
where objid = @id
/* index: sum(used) where indid in (0, 1, 255) - data */
update #spt_space
set indexp = (select sum(used)
from sysindexes
where indid in (0, 1, 255)
and id = @id)
- data
where objid = @id
/* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */
update #spt_space
set unused = reserved
- (select sum(used)
from sysindexes
where indid in (0, 1, 255)
and id = @id)
where objid = @id
update #spt_space
set rows = i.rows
from sysindexes i
where i.indid < 2
and i.id = @id
and objid = @id
fetch next from c_tables
into @id
end
select --top 25
Table_Name = (select [name] from sysobjects where id = objid),
rows = convert(char(11), rows),
reserved_KB = (reserved * d.low / 1024.) ,
data_KB = (data * d.low / 1024.) ,
index_size_KB = (indexp * d.low / 1024.) ,
unused_KB = (unused * d.low / 1024.)
into #tmp
from #spt_space, master.dbo.spt_values d
where d.number = 1
and d.type = 'E'
order by reserved desc
drop table #spt_space
close c_tables
deallocate c_tables
select * from #tmp
Managment Studio也提供現成的報表可以使用,如下圖所示。在物件管理員點選要查詢的資料庫,點選滑鼠右鍵開啟功能選單,選擇[報表]->[標準報表]->[排名最前面資料表的磁碟使用量]即可。
文章標籤
全站熱搜

*****
不好意思,你認錯人囉~