主頁(yè) > 知識(shí)庫(kù) > 一個(gè)查看MSSQLServer數(shù)據(jù)庫(kù)空間使用情況的存儲(chǔ)過(guò)程 SpaceUsed

一個(gè)查看MSSQLServer數(shù)據(jù)庫(kù)空間使用情況的存儲(chǔ)過(guò)程 SpaceUsed

熱門標(biāo)簽:百度地圖標(biāo)注信息怎么修改 AI智能云呼電話機(jī)器人怎么注冊(cè) 福州外呼系統(tǒng)招商 四川穩(wěn)定外呼系統(tǒng)公司 沈陽(yáng)外呼系統(tǒng)有效果嗎 電話機(jī)器人接口是什么樣的 溫州語(yǔ)音外呼系統(tǒng)排名 怎么在高德地圖標(biāo)注多個(gè)點(diǎn) 商家地圖標(biāo)注圖片
運(yùn)行下面存儲(chǔ)過(guò)程

然后直接使用 SpaceUsed 就可以查看了.

存儲(chǔ)過(guò)程代碼

 程序代碼

復(fù)制代碼 代碼如下:

Create procedure SpaceUsed 

as 

begin 

declare @id       int                  -- The object id of @objname. 

declare @type       character(2) -- The object type. 

declare       @pages       int                  -- Working variable for size calc. 

declare @dbname sysname 

declare @dbsize dec(15,0) 

declare @logsize dec(15) 

declare @bytesperpage       dec(15,0) 

declare @pagesperMB              dec(15,0) 

declare @objname nvarchar(776)        -- The object we want size on. 

declare @updateusage varchar(5)             -- Param. for specifying that 

create table #temp1 



       表名              varchar(200) null, 

       行數(shù)               char(11) null, 

       保留空間        varchar(15) null, 

       數(shù)據(jù)使用空間       varchar(15) null, 

       索引使用空間       varchar(15) null, 

        未用空間          varchar(15) null 



--select @objname='N_dep'                               -- usage info. should be updated. 

select @updateusage='false' 

/*Create temp tables before any DML to ensure dynamic 

**  We need to create a temp table to do the calculation. 

**  reserved: sum(reserved) where indid in (0, 1, 255) 

**  data: sum(dpages) where indid  2 + sum(used) where indid = 255 (text) 

**  indexp: sum(used) where indid in (0, 1, 255) - data 

**  unused: sum(reserved) - sum(used) where indid in (0, 1, 255) 

*/ 

declare cur_table cursor for 

  select name from sysobjects where type='u' 

Open cur_table 

fetch next from cur_table into @objname 

While @@FETCH_STATUS=0 

begin 

create table #spt_space 



       rows              int null, 

       reserved    dec(15) null, 

       data        dec(15) null, 

       indexp             dec(15) null, 

       unused             dec(15) null 



/* 

**  Check to see if user wants usages updated. 

*/ 

if @updateusage is not null 

       begin 

              select @updateusage=lower(@updateusage) 

              if @updateusage not in ('true','false') 

                     begin 

                            raiserror(15143,-1,-1,@updateusage) 

                            return(1) 

                     end 

       end 

/* 

**  Check to see that the objname is local. 

*/ 

if @objname IS NOT NULL 

begin 

       select @dbname = parsename(@objname, 3) 

       if @dbname is not null and @dbname > db_name() 

              begin 

                     raiserror(15250,-1,-1) 

                     return (1) 

              end 

       if @dbname is null 

              select @dbname = db_name() 

       /* 

       **  Try to find the object. 

       */ 

       select @id = null 

       select @id = id, @type = xtype 

              from sysobjects 

                     where id = object_id(@objname) 

       /* 

       **  Does the object exist? 

       */ 

       if @id is null 

              begin 

                     raiserror(15009,-1,-1,@objname,@dbname) 

                     return (1) 

              end 

       if not exists (select * from sysindexes 

                            where @id = id and indid  2) 

              if      @type in ('P ','D ','R ','TR','C ','RF') --data stored in sysprocedures 

                            begin 

                                   raiserror(15234,-1,-1) 

                                   return (1) 

                            end 

              else if @type = 'V ' -- View => no physical data storage. 

                            begin 

                                   raiserror(15235,-1,-1) 

                                   return (1) 

                            end 

              else if @type in ('PK','UQ') -- no physical data storage. --?!?! too many similar messages 

                            begin 

                                   raiserror(15064,-1,-1) 

                                   return (1) 

                            end 

              else if @type = 'F ' -- FK => no physical data storage. 

                            begin 

                                   raiserror(15275,-1,-1) 

                                   return (1) 

                            end 

end 

/* 

**  Update usages if user specified to do so. 

*/ 

if @updateusage = 'true' 

       begin 

              if @objname is null 

                     dbcc updateusage(0) with no_infomsgs 

              else 

                     dbcc updateusage(0,@objname) with no_infomsgs 

              print ' ' 

       end 

set nocount on 

/* 

**  If @id is null, then we want summary data. 

*/ 

/*    Space used calculated in the following way 

**       @dbsize = Pages used 

**       @bytesperpage = d.low (where d = master.dbo.spt_values) is 

**    the # of bytes per page when d.type = 'E' and 

**       d.number = 1. 

**    Size = @dbsize * d.low / (1048576 (OR 1 MB)) 

*/ 

if @id is null 

begin 

       select @dbsize = sum(convert(dec(15),size)) 

              from dbo.sysfiles 

              where (status  64 = 0) 

       select @logsize = sum(convert(dec(15),size)) 

              from dbo.sysfiles 

              where (status  64 > 0) 

       select @bytesperpage = low 

              from master.dbo.spt_values 

              where number = 1 

                     and type = 'E' 

       select @pagesperMB = 1048576 / @bytesperpage 

       select  database_name = db_name(), 

              database_size = 

                     ltrim(str((@dbsize + @logsize) / @pagesperMB,15,2) + ' MB'), 

              'unallocated space' = 

                     ltrim(str((@dbsize - 

                            (select sum(convert(dec(15),reserved)) 

                                   from sysindexes 

                                          where indid in (0, 1, 255) 

                            )) / @pagesperMB,15,2)+ ' MB') 

       print ' ' 

       /* 

       **  Now calculate the summary data. 

       **  reserved: sum(reserved) where indid in (0, 1, 255) 

       */ 

       insert into #spt_space (reserved) 

              select sum(convert(dec(15),reserved)) 

                     from sysindexes 

                            where indid in (0, 1, 255) 

       /* 

      ** data: sum(dpages) where indid  2 

       **    + sum(used) where indid = 255 (text) 

       */ 

       select @pages = sum(convert(dec(15),dpages)) 

                     from sysindexes 

                            where indid  2 

       select @pages = @pages + isnull(sum(convert(dec(15),used)), 0) 

              from sysindexes 

                     where indid = 255 

       update #spt_space 

              set data = @pages 

       /* index: sum(used) where indid in (0, 1, 255) - data */ 

       update #spt_space 

              set indexp = (select sum(convert(dec(15),used)) 

                            from sysindexes 

                                   where indid in (0, 1, 255)) 

                         - data 

       /* unused: sum(reserved) - sum(used) where indid in (0, 1, 255) */ 

       update #spt_space 

              set unused = reserved 

                            - (select sum(convert(dec(15),used)) 

                                   from sysindexes 

                                          where indid in (0, 1, 255)) 

       select reserved = ltrim(str(reserved * d.low / 1024.,15,0) + 

                            ' ' + 'KB'), 

              data = ltrim(str(data * d.low / 1024.,15,0) + 

                            ' ' + 'KB'), 

              index_size = ltrim(str(indexp * d.low / 1024.,15,0) + 

                            ' ' + 'KB'), 

              unused = ltrim(str(unused * d.low / 1024.,15,0) + 

                            ' ' + 'KB') 

              from #spt_space, master.dbo.spt_values d 

              where d.number = 1 

                     and d.type = 'E' 

end 

/* 

**  We want a particular object. 

*/ 

else 

begin 

       /* 

       **  Now calculate the summary data. 

       **  reserved: sum(reserved) where indid in (0, 1, 255) 

       */ 

       insert into #spt_space (reserved) 

              select sum(reserved) 

                     from sysindexes 

                            where indid in (0, 1, 255) 

                                   and id = @id 

       /* 

      ** data: sum(dpages) where indid  2 

       **    + sum(used) where indid = 255 (text) 

       */ 

       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 

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

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

       update #spt_space 

              set rows = i.rows 

                     from sysindexes i 

                            where i.indid  2 

                                   and i.id = @id 

        insert into #temp1 

       select name = object_name(@id), 

              rows = convert(char(11), rows), 

              reserved = ltrim(str(reserved * d.low / 1024.,15,0) + 

                            ' ' + 'KB'), 

              data = ltrim(str(data * d.low / 1024.,15,0) + 

                            ' ' + 'KB'), 

              index_size = ltrim(str(indexp * d.low / 1024.,15,0) + 

                            ' ' + 'KB'), 

              unused = ltrim(str(unused * d.low / 1024.,15,0) + 

                            ' ' + 'KB') 

       from #spt_space, master.dbo.spt_values d 

              where d.number = 1 

                     and d.type = 'E' 

Drop table #spt_space 

end 

fetch next from cur_table into @objname 

end 

Close cur_table 

DEALLOCATE cur_table 

Select * from #temp1 order by len(數(shù)據(jù)使用空間) desc,數(shù)據(jù)使用空間 desc,保留空間 desc 

Drop table #temp1 

return (0) 

end 

GO 

您可能感興趣的文章:
  • sqlserver 復(fù)制表 復(fù)制數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程的方法
  • sql 判斷數(shù)據(jù)庫(kù),表,存儲(chǔ)過(guò)程等是否存在的代碼
  • mysql 查詢數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程與函數(shù)的語(yǔ)句
  • SQLserver 數(shù)據(jù)庫(kù)危險(xiǎn)存儲(chǔ)過(guò)程刪除與恢復(fù)方法
  • MSSQL MySQL 數(shù)據(jù)庫(kù)分頁(yè)(存儲(chǔ)過(guò)程)
  • SQL Server中通過(guò)擴(kuò)展存儲(chǔ)過(guò)程實(shí)現(xiàn)數(shù)據(jù)庫(kù)的遠(yuǎn)程備份與恢復(fù)
  • mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)以及函數(shù)、存儲(chǔ)過(guò)程的介紹
  • sqlSQL數(shù)據(jù)庫(kù)怎么批量為存儲(chǔ)過(guò)程/函數(shù)授權(quán)呢?
  • MSSQL監(jiān)控?cái)?shù)據(jù)庫(kù)的DDL操作(創(chuàng)建,修改,刪除存儲(chǔ)過(guò)程,創(chuàng)建,修改,刪除表等)
  • SQL數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程示例解析

標(biāo)簽:來(lái)賓 營(yíng)口 汕尾 寶雞 七臺(tái)河 無(wú)錫 邯鄲 西寧

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《一個(gè)查看MSSQLServer數(shù)據(jù)庫(kù)空間使用情況的存儲(chǔ)過(guò)程 SpaceUsed》,本文關(guān)鍵詞  一個(gè),查看,MSSQLServer,數(shù)據(jù)庫(kù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《一個(gè)查看MSSQLServer數(shù)據(jù)庫(kù)空間使用情況的存儲(chǔ)過(guò)程 SpaceUsed》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于一個(gè)查看MSSQLServer數(shù)據(jù)庫(kù)空間使用情況的存儲(chǔ)過(guò)程 SpaceUsed的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章