筆者工作的公司采用的是SQLServer數據庫,每天都要處理大量的數據,由於筆者進公司的時間比較晚,公司現有的大部分的程序都是以前的程序員留下的,因為他們沒有相關的文檔,筆者對於後台數據庫的很多表的結構和數據都不甚了解,給日常的維護造成了很大的麻煩。www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
在對後台數據庫進行研究的過程中,我需要得到數據庫的某些相關信息,比如,我希望知道各個用戶表占用多少磁盤空間,並且排列出來,可以讓我知道哪些表比較大,數據比較多等等——我相信,這可能也是不少數據庫管理員所關心的問題,所以我決心做一個通用的存儲過程。我對系統的存儲過程sp_spaceused加了一些改動,以適合我的要求。希望這個存儲過程能對大家有些幫助。存儲過程如下:www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if exists(select name from sysobjects where name='spaceused' and type='p')www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
Drop procedure spaceusedwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
GOwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
create procedure spaceused www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
aswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
declare @id int -- The object id of @objname.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
declare @type character(2) -- The object type.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
declare @pages int -- Working variable for size calc.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
declare @dbname sysnamewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
declare @dbsize dec(15,0)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
declare @logsize dec(15)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
declare @bytesperpage dec(15,0)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
declare @pagesperMB dec(15,0)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
declare @objname nvarchar(776) -- The object we want size on.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
declare @updateusage varchar(5) -- Param. for specifying thatwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
create table #temp1www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
(www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
表名 varchar(200) null,www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
行數 char(11) null,www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
保留空間 varchar(15) null,www.chinai tp 采吧采吧不是罪 ow er.comIsmwh