今天在客户实施时,因经常性的需要查看用户录入到数据库中数据的数量,所以写了以下SQL语句用来查询数据库中所有表的数据量,发布到此,希望能给有同样需求的朋友带来帮助。
declare @TableName varchar(128)
declare @T_TableRows Table
(
TableName varchar(128) not null,--表名
RowsCount int not null default(0)--数据的数量
)
declare cur_table cursor local for
select name from sys.tables order by name
open cur_table
fetch cur_table into @TableName
while @@fetch_status = 0
begin
insert into @T_TableRows(TableName,RowsCount)
exec('select ''' + @TableName + ''',count(*) from ' + @TableName)
fetch cur_table into @TableName
end
close cur_table
deallocate cur_table
在上面的SQL中用到了sys.tables表,关于该有的详细用法,请参见本站:
利用SQL语句查询数据库中所有表说明:因为sys.tables表只有sql2005以后才有,所以使用Sql2000的朋友可以使用sysobjects表来替代sys.tables表实现该功能:
SQL如下:
declare @TableName varchar(128)
declare @T_TableRows Table(TableName varchar(128) not null,RowsCount int not null default(0))
declare cur_table cursor local for
select name from sysobjects where xtype='u' order by name
open cur_table
fetch cur_table into @TableName
while @@fetch_status = 0
begin
insert into @T_TableRows(TableName,RowsCount)
exec('select ''' + @TableName + ''',count(*) from ' + @TableName)
fetch cur_table into @TableName
end
close cur_table
deallocate cur_table
select * from @T_TableRows order by RowsCount desc,TableName