zoukankan      html  css  js  c++  java
  • 简单的语句统计所有用户表尺寸大小

    参考SQL2005, 2008和2012的系统存储过程master.sys.sp_spaceused代码后,写了下面一条语句来方便平时统计所有用户表尺寸大小。
    可以结合sp_MSforeachdb再遍历所有用户数据库查看所有表的尺寸大小,注意它的参数@sql不能超过nvarchar(2000),这里就不贴出代码了。
    另外还可以定期运行并将结果保存下来,以便观察数据变化趋势。 

    查询单个数据库的所有用户表尺寸大小:

    Select @@servername as ServerName,db_name() as DBName ,object_id as ObjectID, schema_name(schema_id) as SchName, name as TableName
    	,Rowcnt as Rows,Columns,Indexes,RowLength
    	,ReservedKb, TableUsedKb
    	,UsedKb-TableUsedKb as IndexUsedKb,ReservedKb-UsedKb as UnusedKb
    	,create_date as CreateDate,modify_date as LastModifiedDate, getutcdate() as TrackingUTCTime
    From
    (select
    	object_id
    	,schema_id
    	,name 
    	,(Select max(row_count) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id and p.index_id < 2)  as Rowcnt
    	,(Select Count(1) from dbo.syscolumns with(nolock) where id = t.object_id) as Columns
    	,(Select Count(distinct index_id) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id) as Indexes
    	,(SELECT SUM(length) FROM dbo.syscolumns with(nolock) WHERE id = t.object_id) as RowLength
    	,IsNull((Select SUM(reserved_page_count) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id),0)*8
    		+ IsNull((Select sum(reserved_page_count)
    				FROM sys.dm_db_partition_stats p2 with(nolock)
    				inner join sys.internal_tables it with(nolock) on p2.object_id = it.object_id
    				WHERE it.parent_id = t.object_id 
    						AND it.internal_type IN (202,204,207,211,212,213,214,215,216,221,222,236)),0)* 8 as ReservedKb
    	,IsNull((Select SUM(in_row_data_page_count + lob_used_page_count + row_overflow_used_page_count)
    				 from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id and p.index_id < 2),0)* 8 as TableUsedKb
    	,IsNull((Select SUM(used_page_count) from sys.dm_db_partition_stats p with(nolock) where p.object_id=t.object_id),0)*8
    		+ IsNull((Select sum(used_page_count)
    				FROM sys.dm_db_partition_stats p2 with(nolock)
    				inner join sys.internal_tables it with(nolock) on p2.object_id = it.object_id
    				WHERE it.parent_id = t.object_id 
    						AND it.internal_type IN (202,204,207,211,212,213,214,215,216,221,222,236)),0)* 8 as UsedKb
    	,create_date
    	,modify_date
    from sys.tables t with(nolock) 
    where Type='U'
    ) A
    order by ReservedKb desc
    
  • 相关阅读:
    C#磁吸屏幕窗体类库
    准备
    我写的诗
    How to turn off a laptop keyboard
    How to tell which commit a tag points to in Git?
    Why should I care about lightweight vs. annotated tags?
    How to get rid of “would clobber existing tag”
    Facebook, Google and Twitter threaten to leave Hong Kong over privacy law changes
    The need for legislative reform on secrecy orders
    Can a foreign key be NULL and/or duplicate?
  • 原文地址:https://www.cnblogs.com/drc/p/drc.html
Copyright © 2011-2022 走看看