分类

链接

2011 年 6 月
 12345
6789101112
13141516171819
20212223242526
27282930  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > SQL Server > 正文
共享办公室出租
统计数据库中各个表和空间使用情况
SQL Server 暂无评论 阅读(1,613)

为了方便大家使用,我写成了一个存储过程,如果喜欢就拿去吧,如果觉得有什么不对的地方,留言哈,我有一空就会修改!

废话少说,上代码(转载请注明出处,谢谢):

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: longle(http://longle.taobao.com)--
Create date: 2011-06-17
-- Description: 统计数据库中各个表和空间使用情况
-- =============================================
ALTERPROCEDURE sp_GetDbSpaceUsedInfo
AS
BEGIN
SET NOCOUNT ON;
DECLARE@tempVARCHAR(50) --声明表名临时变量
DECLARE c_rlt CURSOR--声明游标c_rlt
FOR
select o.name from sysobjects o,sysindexes i where o.id=i.id and o.Xtype='U'and i.indid<2
--获取数据库中的表名
/* 声明临时表,要求字段必须和 EXEC sys.sp_spaceused 'tbname'中返回的结果一致 EXEC sys.sp_spaceused 'tbname' 获取指定表名的空间使用情况 */
IFNOTEXISTS(SELECT NAME FROM sys.sysobjects WHERE name='#temptable')
BEGIN
createtable #temptable( [name] VARCHAR(50),
[rows]INT, [reserved] varchar(50), [data] VARCHAR(50), [size] VARCHAR(50), [unused] varchar(50) ) ENDOPEN c_rlt --打开游标
FETCH NEXT FROM c_rlt INTO@tempWHILE@@FETCH_STATUS=0BEGIN
FETCHNEXTFROM c_rlt INTO@temp--把查询结果放到临时变量@temp中INSERT
INTO #temptable
EXEC sys.sp_spaceused @temp--把查询结果放到临时表#temptable中END
CLOSE c_rlt
--别忘记关闭游标
DEALLOCATE c_rlt
--别忘记删除游标
SELECT*FROM #temptable
--从临时表查查询结果
DROPTABLE #temptable --删除临时表了
ENDGO
/*测试用例
 exec sp_GetDbSpaceUsedInfo
*/

结果如下:

(转载请注明出处,谢谢,有什么问题请留言哈!)

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:统计数据库中各个表和空间使用情况 | Bruce's Blog

发表评论

留言无头像?