暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

偶遇Bug:Shrink file的Available free space显示异常

DataBaseNotes 2021-08-20
258

好久没有玩sqlserver了.

最近刚刚好帮同事看看sqlserver的datafile无法收缩之异常.


一,现象重现

  1.  DB 右键选择 shrink file的Available free space显示,99%可用。

    同样,shrink action 选择"Reorganize pages before releasing unused space " 输入 "5000" .


2. 正常来讲,可用空间99%,MRP.MDF应该会缩小到5000M。

3. 实际情况却是,执行成功后, size大小无变化。



二、排查原因。。。

  1. 收缩无法成功,可能需要先备份数据库,再进行收缩。

  2. 执行db完整备份


  3. 执行log收缩也成功了。

  4. 重新执行收缩mdf

    USE [MRP]

    GO

    DBCC SHRINKDATABASE(N'MRP', 10 )

    GO

    DBCC SHRINKFILE (N'MRP' , 5000)

    GO

  5. 执行以上命令十几次,size大小依旧无变化。

  6. 经询问同事,此库初始化大小很小的。并且查看测试库,size只有40G。

    排除此库size是初始化导致的。

  7. 查询数据库的真实可用空间。居然只有52M。。。

    SELECT name ,size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS AvailableSpaceInMB

    FROM sys.database_files; 

  8. 继续跟踪disk reports ,查看top table size。 确实table数据量是有的。size大小也是真实的。

  9. 现在可以肯定,这个Shrink file的Available free space显示不对,是个bug。

    它居然还提示我 “shrink file to  Minimum is 1132MB 。。。”


 

三、结论

1. 真实数据是有540G的,收缩不了是正常的,也是合理的。

2. Shrink file里面的Available free space显示数据,肯定不对。属于bug无疑。


文章转载自DataBaseNotes,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论