查看SQL-SERVER数据库及各个表的数据量及占用空间大小

1、查看某个数据库,直接执行存储过程sp_spaceused即可

exec sp_spaceused;

2、查看某个表,在存储过程后面加上表名即可

EXEC sp_spaceused 'T_XXXXX';

3、查看该数据库中的所有表,可以写一个存储过程,然后执行即可

存储过程如下:

  1. SET ANSI_NULLS ON

  2. GO

  3. SET QUOTED_IDENTIFIER ON

  4. GO

  5. -- =============================================

  6. -- 说明:更新查询数据库中各表的大小,结果存储到数据表中

  7. -- =============================================

  8. CREATE PROCEDURE [dbo].[P_UpdateTableSpaceInfo]

  9. AS

  10. BEGIN

  11. --查询是否存在结果存储表

  12. IF NOT EXISTS (SELECT * FROM sysobjects where id = OBJECT_ID(N'temp_tableSpaceInfo')

  13. AND OBJECTPROPERTY(id, N'IsUserTable') = 1)

  14. BEGIN

  15. --不存在则创建

  16. CREATE TABLE temp_tableSpaceInfo

  17. (name NVARCHAR(128),

  18. rows char(11),

  19. reserved VARCHAR(18),

  20. data VARCHAR(18),

  21. index_size VARCHAR(18),

  22. unused VARCHAR(18))

  23. END

  24. --清空数据表

  25. DELETE FROM temp_tableSpaceInfo

  26. --定义临时变量在遍历时存储表名称

  27. DECLARE @tablename VARCHAR(255)

  28. --使用游标读取数据库内所有表表名

  29. DECLARE table_list_cursor CURSOR FOR

  30. SELECT name FROM sysobjects

  31. WHERE OBJECTPROPERTY(id, N'IsTable') = 1 AND name NOT LIKE N'#%%' ORDER BY name

  32. --打开游标

  33. OPEN table_list_cursor

  34. --读取第一条数据

  35. FETCH NEXT FROM table_list_cursor INTO @tablename

  36. --遍历查询到的表名

  37. WHILE @@FETCH_STATUS = 0

  38. BEGIN

  39. --检查当前表是否为用户表

  40. IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(@tablename)

  41. AND OBJECTPROPERTY(id, N'IsUserTable') = 1)

  42. BEGIN

  43. --当前表则读取其信息插入到表格中

  44. EXECUTE sp_executesql N'INSERT INTO temp_tableSpaceInfo

  45. EXEC sp_spaceused @tbname', N'@tbname varchar(255)', @tbname = @tablename

  46. END

  47. --读取下一条数据

  48. FETCH NEXT FROM table_list_cursor INTO @tablename

  49. END

  50. --释放游标

  51. CLOSE table_list_cursor

  52. DEALLOCATE table_list_cursor

  53. END

  54. GO

执行,查看:

  1. EXEC P_UpdateTableSpaceInfo

  2. SELECT * FROM temp_tableSpaceInfo;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值