您的位置:首页 > 数据库

输出一个数据库中所有表的数据量

2013-03-12 11:07 162 查看
此TSQL语句是针对SQL Server 2012编写。如果使用之前版本,需要对部分语句进行重写。

USE [数据库名称];

--1.建立临时表,来存放结果。
/*
临时表数据结构:
struct Table_TableCount
{
string TableName;//表名字
Int64 Count;//表数据量
}
*/
--1.1 如果临时表存在,则删除
If Exists ( Select * From Tempdb..SysObjects Where ID = Object_id( 'TempDB..#Table_TableCount') )
Begin
Drop Table #Table_TableCount;
End;

--1.2 建立临时表
create table #Table_TableCount
(
[TableName] [Nvarchar](max) NOT NULL,
[Count] [Bigint] NOT NULL
);

--2.用游标Cursor_Table,遍历所有表
DECLARE Cursor_Table CURSOR FOR
SELECT name from sysobjects WHERE xtype = 'u' AND name <> 'dtproperties';
OPEN Cursor_Table;
DECLARE @tableName NVARCHAR(MAX);
FETCH NEXT from Cursor_Table INTO @tableName;
WHILE @@fetch_status = 0
BEGIN
--3.获取游标所指向的当前表的名称,以及数据量,将这两个信息插入临时表
DECLARE @tempSQLText NVARCHAR(MAX) = 'DECLARE @CurrentTableCount Bigint = ( SELECT COUNT(*) From [' + @tableName + '] ); INSERT INTO #Table_TableCount ([TableName],[Count]) VALUES (''' + @tableName + ''', @CurrentTableCount );';
EXEC( @tempSQLText );
FETCH NEXT from Cursor_Table INTO @tableName;
END
CLOSE Cursor_Table;
DEALLOCATE Cursor_Table;

--4.输出(通过构造不同的SELECT语句,来获取不同的输出方式)
SELECT * FROM #Table_TableCount WHERE [COUNT] > 0 ORDER BY [Count] DESC; --当前是输出数据量大于0,并且按数据量的降序排序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐