现在位置:   
			首页 > SQL Server > 正文
			
	
	sql查看各个表和空间使用情况
		
		为了方便大家使用,我写成了一个存储过程,如果喜欢就拿去吧,如果觉得有什么不对的地方,留言哈,我有一空就会修改!
废话少说,上代码(转载请注明出处,谢谢):
- SET ANSI_NULLS ON
 - GO
 - SET QUOTED_IDENTIFIER ON
 - GO
 - -- =============================================
 - -- Author: longle(http://longle.taobao.com)
 - -- Create date: 2011-06-17
 - -- Description: 统计数据库中各个表和空间使用情况
 - -- =============================================
 - ALTER PROCEDURE sp_GetDbSpaceUsedInfo
 - AS
 - BEGIN
 - SET NOCOUNT ON;
 - DECLARE @temp VARCHAR(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' 获取指定表名的空间使用情况
 - */
 - IF NOT EXISTS(SELECT NAME FROM sys.sysobjects WHERE name='#temptable')
 - BEGIN
 - create table #temptable(
 - [name] VARCHAR(50),
 - [rows] INT,
 - [reserved] varchar(50),
 - [data] VARCHAR(50),
 - [size] VARCHAR(50),
 - [unused] varchar(50)
 - )
 - END
 - OPEN c_rlt --打开游标
 - FETCH NEXT FROM c_rlt INTO @temp
 - WHILE @@FETCH_STATUS=0
 - BEGIN
 - FETCH NEXT FROM c_rlt INTO @temp --把查询结果放到临时变量@temp中
 - INSERT INTO #temptable EXEC sys.sp_spaceused @temp --把查询结果放到临时表#temptable中
 - END
 - CLOSE c_rlt --别忘记关闭游标
 - DEALLOCATE c_rlt --别忘记删除游标
 - SELECT * FROM #temptable --从临时表查查询结果
 - DROP TABLE #temptable --删除临时表了
 - END
 - GO
 - /*测试用例
 - exec sp_GetDbSpaceUsedInfo
 - */
 
结果如下:

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