如何在sql server 2008R2中找到所有空表 [英] How to find all empty table in sql server 2008R2

查看:278
本文介绍了如何在sql server 2008R2中找到所有空表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的所有人,



有一种非常简单的方法可以为它编写查询。



SELECT

t.name table_name,

s.name SCHEMA_NAME,

sum(p.rows)total_rows

FROM

sys.tables t

加入sys.schemas s(t.schema_id = s.schema_id)

加入sys.partitions p on( t.object_id = p.object_id)

WHERE p.index_id in(0,1)

GROUP BY t.name,s.name

具有总和(p.rows)= 0

Dear All,

There is very simple way to write query for same.

SELECT
t.name table_name,
s.name SCHEMA_NAME,
sum(p.rows) total_rows
FROM
sys.tables t
join sys.schemas s on (t.schema_id = s.schema_id)
join sys.partitions p on (t.object_id = p.object_id)
WHERE p.index_id in (0,1)
GROUP BY t.name,s.name
HAVING sum(p.rows) = 0

推荐答案

此查询不仅对于空表非常有用,而且还可以概述完全消耗的空间以及在哪里:

This query is veryusefull not only for empty tables but also to get an overview of the space consumed totally and where:
SELECT 
    t.NAME AS TableName,
    s.Name AS SchemaName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB, 
    SUM(a.used_pages) * 8 AS UsedSpaceKB, 
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 255 
	
GROUP BY 
    t.Name, s.Name, p.Rows
ORDER BY 
    t.Name


这篇关于如何在sql server 2008R2中找到所有空表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆