MS SQL SERVER 簡易取得資料表實體檔案大小

本文介绍了一种简易方法来获取 MS SQL Server 中各数据表的实际文件大小,包括数据占用空间、索引大小及未使用空间等信息,有助于数据库管理员监控数据增长情况。
--MS SQL SERVER 簡易取得資料表實體檔案大小 
--
下列的方法只能做估算,但大致可以解決一些資料庫管理者初步觀察資料成長的方法。

DECLARE @tblname varchar(50)            --資料表名稱(使用者資料表名稱變數)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[#TableStatics_TEMP]'and OBJECTPROPERTY(id, N'IsUserTable'= 1)
DROP TABLE [dbo].[#TableStatics_TEMP]   --暫存資料表
CREATE TABLE #TableStatics_TEMP (       --建立暫存資料表
    [name] [varchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,        --資料表名稱
    [rows] [varchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,        --資料表現有的資料列數
    [reserved] [varchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,    --資料庫中的物件所配置的空間大小
    [data] [varchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,        --資料所用的空間大小
    [index_size] [varchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,  --索引所用的空間大小
    [unused] [varchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL )      --保留給資料庫中之物件但尚未使用的空間大小
DECLARE cur_TableStatics CURSOR FORWARD_ONLY FOR 
    
SELECT name FROM sysobjects WHERE xtype='U' ORDER BY name               --取得使用者資料表名稱
OPEN cur_TableStatics
FETCH NEXT FROM cur_TableStatics 
INTO @tblname
    
WHILE @@FETCH_STATUS = 0
        
BEGIN   
            
INSERT #TableStatics_TEMP
                
EXEC sp_spaceused @tblname,@updateusage = N'TRUE'           --顯示資料表的相關磁碟空間資訊
            FETCH NEXT FROM cur_TableStatics
            
INTO @tblname
        
END
CLOSE cur_TableStatics
DEALLOCATE cur_TableStatics
SELECT name,rows,
    
CONVERT(varchar(18),CONVERT(NUMERIC(18,2),SUBSTRING(reserved,1,LEN(reserved)-2))/1024+ 'MB' AS reserved,
    
CONVERT(varchar(18),CONVERT(NUMERIC(18,2),SUBSTRING(data,1,LEN(data)-2))/1024+ 'MB' AS data,
    
CONVERT(varchar(18),CONVERT(NUMERIC(18,2),SUBSTRING(index_size,1,LEN(index_size)-2))/1024+ 'MB' AS index_siz,
    
CONVERT(varchar(18),CONVERT(NUMERIC(18,2),SUBSTRING(unused,1,LEN(unused)-2))/1024+ 'MB' AS unused
FROM #TableStatics_TEMP where rows <> '0'           --查詢暫存資料表資料比數不為的資料表
DROP TABLE #TableStatics_TEMP                               --移出暫存資料表

 

转载于:https://www.cnblogs.com/Athrun/archive/2010/05/12/1733956.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值