程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 獲取SQL Server數據庫裡表占用容量大小

獲取SQL Server數據庫裡表占用容量大小

編輯:關於MYSQL數據庫

其實只要使用系統內置的存儲過程sp_spaceused就可以得到表的相關信息

如:sp_spaceused 'tablename' 

以下是為了方便寫的一個存儲過程,目的是把當前的所有表的相關信息全部都保存在一個指定的表裡面

 

以下為引用的內容:
  CREATE PROCEDURE get_tableinfo AS
  
  if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  create table tablespaceinfo             --創建結果存儲表
  (nameinfo varchar(50) ,
  rowsinfo int , reserved varchar(20) ,
  datainfo varchar(20) ,
  index_size varchar(20) ,
  unused varchar(20) )
  
  delete from tablespaceinfo --清空數據表
  
  declare @tablename varchar(255) --表名稱
  
  declare @cmdsql varchar(500)
  
  DECLARE Info_cursor CURSOR FOR
  select o.name
  from dbo.sysobjects o where OBJECTPROPERTY(o.id, N'IsTable') = 1
  and o.name not like N'#%%' order by o.name
  
  OPEN Info_cursor
  
  FETCH NEXT FROM Info_cursor
  INTO @tablename
  
  WHILE @@FETCH_STATUS = 0
  BEGIN
  
  if exists (select * from dbo.sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  execute sp_executesql
  N'insert into tablespaceinfo exec sp_spaceused @tbname',
  N'@tbname varchar(255)',
  @tbname = @tablename
  
  FETCH NEXT FROM Info_cursor
  INTO @tablename
  END
  
  CLOSE Info_cursor
  DEALLOCATE Info_cursor
  GO
  
  執行存儲過程
  
  exec get_tableinfo
  
  查詢運行該存儲過程後得到的結果
  
  select *
  from tablespaceinfo
  order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved