首页 > 解决方案 > 我如何知道存储在 SQL 文件组数据/行中的内容?

问题描述

我正在每月清理保存在 SQL 文件组中的数据,我删除一个月的数据,然后缩小数据文件组以节省空间,注意文件组是基于日期的,每个月都有自己的文件组。

但是这次删除完成后,我注意到文件组中仍有数据,由于下面的查询,行不为零,但我无法确定那里保存的行是什么。收缩不起作用,因为可用空间不是 100%。

所以我的问题是我怎么知道特定文件组中还保存了什么?

```
use dhpo

SELECT

FileGroup = FILEGROUP_NAME(a.data_space_id) ,

TableName = OBJECT_NAME(p.object_id) ,

IndexName = i.name ,

           p.rows,

8 * SUM(a.used_pages) AS 'Size(KB)' ,

8 * SUM(a.used_pages) / 1024 AS 'Size(MB)' ,

8 * SUM(a.used_pages) / 1024 / 1024 AS 'Size(GB)'

FROM

sys.allocation_units a

INNER JOIN sys.partitions p

ON  a.container_id = CASE WHEN a.type IN ( 1 , 3 ) THEN p.hobt_id

                      ELSE p.partition_id

                 END

AND p.object_id > 1024

LEFT JOIN sys.indexes i

ON  i.object_id = p.object_id

AND i.index_id = p.index_id


where FILEGROUP_NAME(a.data_space_id)='filegroupName'

GROUP BY

a.data_space_id ,

p.object_id ,

i.object_id ,

           p.rows,

i.index_id ,

i.name

ORDER BY

           OBJECT_NAME(p.object_id),

FILEGROUP_NAME(a.data_space_id) ,

SUM(a.used_pages) DESC; ```

标签: sqlshrinkfilegroup

解决方案


推荐阅读