快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

如何获取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
返回类别: 教程
上一教程: 让你的SQL运行速度明显提高
下一教程: ACCESS数据有效性检查

您可以阅读与"如何获取SQL SERVER数据库里表的占用容量大小"相关的教程:
· 当SQL SERVER数据库崩溃时如何恢复
· 数据库人员手边系列:SQL Server数据表的信息
· MS SQL SERVER中如何迅速获取表的记录总数
· SQL Server2000数据库文件损坏时如何恢复
· 当SQL Server数据库崩溃时如何恢复?
    微笑服务 优质保证 索取样品