实用的存储历程之一[MSSQL防范]
本文“实用的存储历程之一[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
实用的存储历程之一
笔者工作的公司采取的是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
数据利用空间 varchar(15) null,www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
索引利用空间 varchar(15) null,www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
未用空间 varchar(15) nullwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
--select @objname='N_dep' -- usage info. should be updated.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @updateusage='false'www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*Create temp tables before any DML to ensure dynamicwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** We need to create a temp table to do the calculation.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** reserved: sum(reserved) where indid in (0, 1, 255)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** data: sum(dpages) where indid < 2 + sum(used) where indid = 255 (text)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** indexp: sum(used) where indid in (0, 1, 255) - datawww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** unused: sum(reserved) - sum(used) where indid in (0, 1, 255)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
declare cur_table cursor forwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select name from sysobjects where type='u'www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
Open cur_tablewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
fetch next from cur_table into @objnamewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
While @@FETCH_STATUS=0www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
create table #spt_spacewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
(www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
rows int null,www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
reserved dec(15) null,www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
data dec(15) null,www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
indexp dec(15) null,www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
unused dec(15) nullwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** Check to see if user wants usages updated.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if @updateusage is not nullwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @updateusage=lower(@updateusage)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if @updateusage not in ('true','false')www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
raiserror(15143,-1,-1,@updateusage)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
return(1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** Check to see that the objname is local.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if @objname IS NOT NULLwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @dbname = parsename(@objname, 3)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if @dbname is not null and @dbname <> db_name()www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
raiserror(15250,-1,-1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
return (1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if @dbname is nullwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @dbname = db_name()www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** Try to find the object.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @id = nullwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @id = id, @type = xtypewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysobjectswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where id = object_id(@objname)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** Does the object exist?www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if @id is nullwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
raiserror(15009,-1,-1,@objname,@dbname)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
return (1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if not exists (select * from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where @id = id and indid < 2)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if @type in ('P ','D ','R ','TR','C ','RF') --data stored in sysprocedureswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
raiserror(15234,-1,-1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
return (1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
else if @type = 'V ' -- View => no physical data storage.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
raiserror(15235,-1,-1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
return (1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
else if @type in ('PK','UQ') -- no physical data storage. --?!?! too many similar messageswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
raiserror(15064,-1,-1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
return (1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
else if @type = 'F ' -- FK => no physical data storage.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
raiserror(15275,-1,-1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
return (1)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** Update usages if user specified to do so.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if @updateusage = 'true'www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if @objname is nullwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
dbcc updateusage(0) with no_infomsgswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
elsewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
dbcc updateusage(0,@objname) with no_infomsgswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
print ' 'www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
set nocount onwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** If @id is null, then we want summary data.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/* Space used calculated in the following waywww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** @dbsize = Pages usedwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** @bytesperpage = d.low (where d = master.dbo.spt_values) iswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** the # of bytes per page when d.type = 'E' andwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** d.number = 1.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** Size = @dbsize * d.low / (1048576 (OR 1 MB))www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
if @id is nullwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @dbsize = sum(convert(dec(15),size))www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from dbo.sysfileswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where (status & 64 = 0)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @logsize = sum(convert(dec(15),size))www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from dbo.sysfileswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where (status & 64 <> 0)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @bytesperpage = lowwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from master.dbo.spt_valueswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where number = 1www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
and type = 'E'www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @pagesperMB = 1048576 / @bytesperpagewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select database_name = db_name(),www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
database_size =www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
ltrim(str((@dbsize + @logsize) / @pagesperMB,15,2) + ' MB'),www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
'unallocated space' =www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
ltrim(str((@dbsize -www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
(select sum(convert(dec(15),reserved))www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where indid in (0, 1, 255)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
)) / @pagesperMB,15,2)+ ' MB')www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
print ' 'www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** Now calculate the summary data.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** reserved: sum(reserved) where indid in (0, 1, 255)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
insert into #spt_space (reserved)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select sum(convert(dec(15),reserved))www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where indid in (0, 1, 255)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** data: sum(dpages) where indid < 2www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** + sum(used) where indid = 255 (text)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @pages = sum(convert(dec(15),dpages))www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where indid < 2www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @pages = @pages + isnull(sum(convert(dec(15),used)), 0)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where indid = 255www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
update #spt_spacewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
set data = @pageswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/* index: sum(used) where indid in (0, 1, 255) - data */www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
update #spt_spacewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
set indexp = (select sum(convert(dec(15),used))www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where indid in (0, 1, 255))www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
- datawww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
update #spt_spacewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
set unused = reservedwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
- (select sum(convert(dec(15),used))www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where indid in (0, 1, 255))www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select reserved = ltrim(str(reserved * d.low / 1024.,15,0) +www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
' ' + 'KB'),www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
data = ltrim(str(data * d.low / 1024.,15,0) +www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
' ' + 'KB'),www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
index_size = ltrim(str(indexp * d.low / 1024.,15,0) +www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
' ' + 'KB'),www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
unused = ltrim(str(unused * d.low / 1024.,15,0) +www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
' ' + 'KB')www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from #spt_space, master.dbo.spt_values dwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where d.number = 1www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
and d.type = 'E'www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** We want a particular object.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
elsewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
beginwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** Now calculate the summary data.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** reserved: sum(reserved) where indid in (0, 1, 255)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
insert into #spt_space (reserved)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select sum(reserved)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where indid in (0, 1, 255)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
and id = @idwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/*www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** data: sum(dpages) where indid < 2www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
** + sum(used) where indid = 255 (text)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
*/www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @pages = sum(dpages)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where indid < 2www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
and id = @idwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select @pages = @pages + isnull(sum(used), 0)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where indid = 255www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
and id = @idwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
update #spt_spacewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
set data = @pageswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/* index: sum(used) where indid in (0, 1, 255) - data */www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
update #spt_spacewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
set indexp = (select sum(used)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where indid in (0, 1, 255)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
and id = @id)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
- datawww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
/* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
update #spt_spacewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
set unused = reservedwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
- (select sum(used)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexeswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where indid in (0, 1, 255)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
and id = @id)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
update #spt_spacewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
set rows = i.rowswww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from sysindexes iwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where i.indid < 2www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
and i.id = @idwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
insert into #temp1www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
select name = object_name(@id),www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
rows = convert(char(11), rows),www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
reserved = ltrim(str(reserved * d.low / 1024.,15,0) +www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
' ' + 'KB'),www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
data = ltrim(str(data * d.low / 1024.,15,0) +www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
' ' + 'KB'),www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
index_size = ltrim(str(indexp * d.low / 1024.,15,0) +www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
' ' + 'KB'),www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
unused = ltrim(str(unused * d.low / 1024.,15,0) +www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
' ' + 'KB')www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
from #spt_space, master.dbo.spt_values dwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
where d.number = 1www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
and d.type = 'E'www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
Drop table #spt_spacewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
fetch next from cur_table into @objnamewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
Close cur_tablewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
DEALLOCATE cur_tablewww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
Select * from #temp1 order by len(保存空间) desc,保存空间 descwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
Drop table #temp1www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
return (0)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
endwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
原理很简单,相信大家都能看懂,sp_spaceused几近原封不动地保存下来,调用也很简单,直接履行便可,没有任何参数,存储历程履行后,将把当前衔接的数据库中全部数据表按照从大到小布列出来,还有其他的相关信息.假如能对大家有所参考代价,就请大家能给forgot2000一点掌声鼓舞吧,谢谢!www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
本存储历程在SQLServer7.0/2000下通过.www.chinai tp 采吧采吧不是罪 ow er.comIsmwh
本人QQ:33563255,E-mail:coolforgot@sina.comwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:全文本检索的利用(3)
- ·下一篇文章:小写转大写金额
- ·中查找“实用的存储历程之一”更多相关内容
- ·中查找“实用的存储历程之一”更多相关内容