
- BEGIN
- --查询目前数据库中的用户表
- DECLARE @currentTable TABLE (tableName NVARCHAR(50));
- INSERT INTO @currentTable (tableName)
- SELECT name
- FROM sysobjects
- WHERE xtype = 'U';
- --缓存系统存储过程的表变量
- DECLARE @temp TABLE(tableName NVARCHAR(50), rows NVARCHAR(50), reserved NVARCHAR(50),
- data NVARCHAR(50), indexSize NVARCHAR(50), unused NVARCHAR(50));
- DECLARE i_cursor CURSOR FOR SELECT tableName FROM @currentTable;
- OPEN i_cursor;
- DECLARE @tableName NVARCHAR(50);
- FETCH NEXT FROM i_cursor INTO @tableName;
- WHILE @@FETCH_STATUS = 0
- BEGIN
- INSERT INTO @temp
- --调用系统存储过程,查询表的资源占用情况
- EXEC sp_spaceused @tableName;
- FETCH NEXT FROM i_cursor INTO @tableName;
- END
- CLOSE i_cursor;
- DEALLOCATE i_cursor;
- DECLARE @temp1 TABLE(tableName NVARCHAR(50), rows INT, reserved INT, data INT, indexSize INT, unused INT);
- INSERT INTO @temp1
- SELECT tableName
- , rows
- , convert(INT, substring(reserved, 1, len(reserved) - 3))
- , convert(INT, substring(data, 1, len(data) - 3))
- , convert(INT, substring(indexSize, 1, len(indexSize) - 3))
- , convert(INT, substring(unused, 1, len(unused) - 3))
- FROM @temp;
- --统计比例
- DECLARE @dataSum INT, @indexSum INT;
- SELECT @dataSum = sum(data), @indexSum = sum(indexSize) FROM @temp1;
- DECLARE @result TABLE(tableName NVARCHAR(50), rows INT, data DECIMAL(10,2), dataRate DECIMAL(10,2),
- indexSize DECIMAL(10,2), indexRate DECIMAL(10,2))
- INSERT INTO @result
- SELECT tableName
- , rows
- , data * 1.0 / 1048576 --KB转为GB
- , data * 1.0 / @dataSum
- , indexSize * 1.0 / 1048576
- , indexSize * 1.0 / @indexSum
- FROM @temp1
- SELECT * FROM @result ORDER BY data DESC;
- END
评价
排名
78
文章
3
粉丝
0
评论
0
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术