分类:
数据库
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
评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术