求SQL语句或存储过程 实现:
我的是ms sql2005数据库,
我想每天统计某个库下所有表的记录总和,并将结果记录到Result表中。假设有这个库有 a b c 表以及一个名为Record表,
这个Record表里面记录就是本库所有表的名称(a b c )现在想 a b c各表的记录数 将总和写入Result表。因为abc。。表可以今后不断的创建新表,
如果采用select count(*) from a ...这样写死方式 不方便以后维护 所以看看能否实现自动读取Record表里面的所有表名
并进行统计
谢谢你的帮忙
我的是ms sql2005数据库,
我想每天统计某个库下所有表的记录总和,并将结果记录到Result表中。假设有这个库有 a b c 表以及一个名为Record表,
这个Record表里面记录就是本库所有表的名称(a b c )现在想 a b c各表的记录数 将总和写入Result表。因为abc。。表可以今后不断的创建新表,
如果采用select count(*) from a ...这样写死方式 不方便以后维护 所以看看能否实现自动读取Record表里面的所有表名
并进行统计
谢谢你的帮忙
--楼主是否要索引?
select o.name as 表名,i.rows as 记录数
from sysobjects o,sysindexes i
where o.id=i.id
and o.type='u'
and i.indid=0 indid=0(没有聚集索引的表) 或者 indid=1(有聚集索引的表)
看结果是否正确?
--或者
insert into Record exec sp_msforeachtable 'select ''?'',count(*) from ?'
select @a='insert record(',@b='select '
select @a=@a+name+',',@b=@b+'(select count(*) from '+name+'),' from sysobjects where type='u'
select @a=left(@a,len(@a)-1)+')',@b=left(@b,len(@b)-1)exec(@a+@b)
select max(a.rowcnt) 计数
from sysindexes a
join sys.objects b on b.object_id=a.id
where b.[name]='kucun'--查询当前数据库的数据量计数,按表分组
use --数据库
select max(a.rowcnt) 计数,b.[name] 表名
from sysindexes a
join sys.objects b on b.object_id=a.id
where b.type='U'
group by b.[name]
having max(a.rowcnt) >0
order by 1 desc
EXEC sp_MSforeachtable 'INSERT INTO #temp SELECT ''?'', COUNT(*) FROM ?'
SELECT TableName, RowCnt FROM #temp ORDER BY TableName
DROP TABLE #temp