我有一个非常大的数据库,即将使用所有空间。所以我想查看所有大表,如果它们都被压缩了。我已经获得了一些关于列出所有解压缩表的脚本,但是如果有人能告诉我如何运行查询,可以按表大小列出所有未压缩表顺序。
答案 0 :(得分:0)
这应该可以满足您的需求。具体来说,请查看data_compression_desc。
use <DatabaseName, sysname, >
go
set nocount on
go
select
IndexName = i.Name,
TableName = object_name(p.object_id),
IndexRows = p.rows,
DataCompression = data_compression_desc,
ps.in_row_data_page_count,
ps.in_row_used_page_count,
ps.in_row_reserved_page_count,
ps.lob_used_page_count,
ps.lob_reserved_page_count,
ps.row_overflow_used_page_count,
ps.row_overflow_reserved_page_count,
ps.used_page_count,
ps.reserved_page_count,
ps.row_count
from sys.partitions p
inner join sys.dm_db_partition_stats ps
on p.partition_id = ps.partition_id
and p.object_id = ps.object_id
inner join sys.indexes i
on p.object_id = i.object_id
and p.index_id = i.index_id
where p.object_id = object_id('<DatabaseName, sysname, >.dbo.<TableName, sysname, >')
答案 1 :(得分:0)
SSMS中有一些标准报告可用于查看所有表使用的所有磁盘间隔,以及是否有任何未使用的磁盘空间分配给任何表。
如果您右键单击对象资源管理器中的数据库名称并转到“报告”,您可以找到许多内置报告。在你的情况下Disk Usage by Top Tables
是你应该看的那个。
找到罪魁祸首后,您可以使用DBCC CLEANTABLE
命令来回收未使用的空间。