sql查询数据库中所有表的记录条数,以及占用磁盘空间大小。


SELECT TableName = obj.name, TotalRows = prt.rows, [SpaceUsed(KB)] = SUM(alloc.used_pages)*8 
FROM sys.objects obj JOIN sys.indexes idx on obj.object_id = idx.object_id JOIN sys.partitions prt on obj.object_id = prt.object_id 
JOIN sys.allocation_units alloc on alloc.container_id = prt.partition_id 
WHERE obj.type = 'U' AND idx.index_id IN (0, 1)GROUP BY obj.name, prt.rows ORDER BY TotalRows DESC



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

exec sp_spaceused;

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

EXEC sp_spaceused 'T_XXXXX';


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

存储过程如下:


SET ANSI_NULLS ON


GO


SET QUOTED_IDENTIFIER ON


GO


-- =============================================


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


-- =============================================


CREATE PROCEDURE [dbo].[P_UpdateTableSpaceInfo]


AS


BEGIN


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


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


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


BEGIN


--不存在则创建


CREATE TABLE temp_tableSpaceInfo


(name NVARCHAR(128),


rows char(11),


reserved VARCHAR(18),


data VARCHAR(18),


index_size VARCHAR(18),


unused VARCHAR(18))


END


--清空数据表


DELETE FROM temp_tableSpaceInfo


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


DECLARE @tablename VARCHAR(255)


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


DECLARE table_list_cursor CURSOR FOR


SELECT name FROM sysobjects


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


--打开游标


OPEN table_list_cursor


--读取第一条数据


FETCH NEXT FROM table_list_cursor INTO @tablename


--遍历查询到的表名


WHILE @@FETCH_STATUS = 0


BEGIN


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


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


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


BEGIN


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


EXECUTE sp_executesql N'INSERT INTO temp_tableSpaceInfo


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


END


--读取下一条数据


FETCH NEXT FROM table_list_cursor INTO @tablename


END


--释放游标


CLOSE table_list_cursor


DEALLOCATE table_list_cursor


END


GO


执行,查看:


EXEC P_UpdateTableSpaceInfo


SELECT * FROM temp_tableSpaceInfo;



————————————————

版权声明:本文为CSDN博主「西伯利亚天狼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/grh_168/article/details/110479604


标签: none

添加新评论