軟件測試中如何獲取SQL Server數據庫里表的占用容量大小

發表于:2010-06-24來源:作者:點擊數: 標簽:軟件測試數據庫sqlSQLSql
軟件 測試 中如何獲取 SQL Server 數據庫 里表的占用容量大小 其實只要使用系統內置的存儲過程sp_spaceused就可以得到表的相關信息 如:sp_spaceused 'tablename' 以下是為了方便寫的一個存儲過程,目的是把當前的所有表的相關信息全部都保存在一個指定的表

軟件測試中如何獲取SQL Server數據庫里表的占用容量大小

其實只要使用系統內置的存儲過程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

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97