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

此TSQL语句是针对SQL Server 2012编写。如果使用之前版本,需要对部分语句进行重写。

 1 USE [数据库名称];
 2 
 3 --1.建立临时表,来存放结果。
 4 /*
 5 临时表数据结构:
 6 struct Table_TableCount
 7 {
 8     string TableName;//表名字
 9     Int64 Count;//表数据量
10 }
11 */
12 --1.1 如果临时表存在,则删除
13 If Exists ( Select * From Tempdb..SysObjects Where ID = Object_id( 'TempDB..#Table_TableCount') )
14     Begin
15         Drop Table #Table_TableCount;
16     End;
17 
18 --1.2 建立临时表
19 create table #Table_TableCount
20 (
21     [TableName] [Nvarchar](max) NOT NULL,
22     [Count] [Bigint] NOT NULL
23 );
24 
25 --2.用游标Cursor_Table,遍历所有表
26 DECLARE Cursor_Table CURSOR FOR
27     SELECT name from sysobjects WHERE xtype = 'u' AND name <> 'dtproperties';
28 OPEN Cursor_Table;
29 DECLARE @tableName NVARCHAR(MAX);
30 FETCH NEXT from Cursor_Table INTO @tableName;
31 WHILE @@fetch_status = 0
32 BEGIN
33     --3.获取游标所指向的当前表的名称,以及数据量,将这两个信息插入临时表
34     DECLARE @tempSQLText NVARCHAR(MAX) = 'DECLARE @CurrentTableCount Bigint = ( SELECT COUNT(*) From [' + @tableName + '] ); INSERT INTO #Table_TableCount ([TableName],[Count]) VALUES (''' + @tableName + ''', @CurrentTableCount );';
35     EXEC( @tempSQLText );
36     FETCH NEXT from Cursor_Table INTO @tableName;
37 END
38 CLOSE Cursor_Table;
39 DEALLOCATE Cursor_Table;
40 
41 --4.输出(通过构造不同的SELECT语句,来获取不同的输出方式)
42 SELECT * FROM #Table_TableCount WHERE [COUNT] > 0 ORDER BY [Count] DESC; --当前是输出数据量大于0,并且按数据量的降序排序

 

转载于:https://www.cnblogs.com/xxxteam/archive/2013/03/12/2955300.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值