查询SQL-Server数据库各表数据量
--判断是否存在该临时表,不存在则创建临时表
IF NOT EXISTS (select * from tempdb..sysobjects where id=object_id('tempdb..#Tmp'))
--创建临时表#Tmp
create table #Tmp
(
ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1
TableName varchar(50),
Cout INT,
primary key (ID) --定义ID为临时表#Tmp的主键
);
--赋值原数据
DECLARE cur1 CURSOR FOR
SELECT name
FROM [PMS_TEST]..sysobjects where xtype='U' --[PMS_TEST 更改为自己的数据库 库名]
DECLARE @temp NVARCHAR(1000)
DECLARE @counT INT
DECLARE @sqlTemp NVARCHAR(1000)
OPEN cur1 --开启游标
FETCH NEXT FROM cur1 INTO @temp --循环游标
WHILE(@@fetch_status=0) --游标结束状态
BEGIN
--拼接查询当前表数据量sql
SET @sqlTemp='select @a=count(1) from '+@temp
--执行sql并返回count值 @count
exec sp_executesql @sqlTemp,N'@a int output', @count OUTPUT
--保存表名及数据量 插入至临时表 #Tmp
INSERT INTO #Tmp( TableName, Cout ) VALUES ( @temp, @count )
FETCH NEXT FROM cur1 INTO @temp --读取下一条数据
END
CLOSE cur1 --关闭游标
DEALLOCATE cur1 --摧毁游标所占资源
--倒序查询临时表数据
SELECT * FROM #Tmp WHERE Cout>0
ORDER BY Cout DESC
---删除临时表
DROP TABLE
#Tmp

浙公网安备 33010602011771号