论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Sql Server教程
Tag:注入,存储过程,分页,安全,优化,加密,索引,日志,压缩,base64,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,触发器,socket,安装,sqlserver2000,sqlserver2005,sqlserver2008,视频教程

实用的存储过程之一

文章类别:Sql Server | 发表日期:2008-10-5 21:36:17

实用的存储过程之一

笔者工作的公司采用的是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

 www.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

 www.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

 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

 www.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

/*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

 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

 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

 www.chinai tp 采吧采吧不是罪 ow er.comIsmwh

       select @dbname = parsename(@objname, 3)www.chinai tp 采吧采吧不是罪 ow er.comIsmwh

 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

 www.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

       /*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

       /*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

 www.chinai tp 采吧采吧不是罪 ow er.comIsmwh

 www.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

 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

/*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

 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

 www.chinai tp 采吧采吧不是罪 ow er.comIsmwh

 www.chinai tp 采吧采吧不是罪 ow er.comIsmwh

set nocount onwww.chinai tp 采吧采吧不是罪 ow er.comIsmwh

 www.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

 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

 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

 www.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

 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

       /*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

 www.chinai tp 采吧采吧不是罪 ow er.comIsmwh

 www.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

 www.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

 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

/*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

       /*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

 www.chinai tp 采吧采吧不是罪 ow er.comIsmwh

 www.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

 www.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

 www.chinai tp 采吧采吧不是罪 ow er.comIsmwh

 www.chinai tp 采吧采吧不是罪 ow er.comIsmwh

上一篇:{技巧}实用的存储过程之二 人气:1662
下一篇:{技巧}小写转大写金额 人气:2014
视频教程列表
文章教程搜索
 
Sql Server推荐教程
Sql Server热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058