分类目录

链接

2011 年 11 月
 123456
78910111213
14151617181920
21222324252627
282930  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > SQL Server > 正文
sql查看各个表和空间使用情况
SQL Server 暂无评论 阅读(1,908)

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

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

 

  1.  
  2. SET ANSI_NULLS ON
  3. GO
  4. SET QUOTED_IDENTIFIER ON
  5. GO
  6. -- =============================================
  7. -- Author: longlehttp://longle.taobao.com)
  8. -- Create date: 2011-06-17
  9. -- Description: 统计数据库中各个表和空间使用情况
  10. -- =============================================
  11. ALTER PROCEDURE sp_GetDbSpaceUsedInfo
  12. AS
  13. BEGIN
  14. SET NOCOUNT ON; 
  15. DECLARE @temp VARCHAR(50) --声明表名临时变量
  16.  
  17. DECLARE c_rlt CURSOR --声明游标c_rlt
  18. FOR 
  19. select o.name from sysobjects o,sysindexes i 
  20. where o.id=i.id and o.Xtype='U' and i.indid<2 --获取数据库中的表名
  21. /*
  22. 声明临时表,要求字段必须和 EXEC sys.sp_spaceused 'tbname'中返回的结果一致
  23. EXEC sys.sp_spaceused 'tbname' 获取指定表名的空间使用情况
  24. */
  25. IF NOT EXISTS(SELECT NAME FROM sys.sysobjects WHERE name='#temptable')
  26. BEGIN
  27. create table #temptable( 
  28. [name] VARCHAR(50),
  29. [rows] INT,
  30. [reserved] varchar(50),
  31. [data] VARCHAR(50),
  32. [size] VARCHAR(50),
  33. [unused] varchar(50)
  34. )
  35. END
  36.  
  37. OPEN c_rlt --打开游标
  38. FETCH NEXT FROM c_rlt INTO @temp
  39. WHILE @@FETCH_STATUS=0
  40. BEGIN
  41. FETCH NEXT FROM c_rlt INTO @temp --把查询结果放到临时变量@temp
  42. INSERT INTO #temptable EXEC sys.sp_spaceused @temp --把查询结果放到临时表#temptable中
  43. END
  44.  
  45. CLOSE c_rlt --别忘记关闭游标
  46. DEALLOCATE c_rlt --别忘记删除游标
  47.  
  48. SELECT * FROM #temptable --从临时表查查询结果
  49. DROP TABLE #temptable --删除临时表了
  50.  
  51. END
  52. GO
  53. /*测试用例
  54.  
  55. exec sp_GetDbSpaceUsedInfo
  56.  
  57. */
  58.  

结果如下:

 

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

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

发表评论

留言无头像?