该数据库的大小几乎为 55GB。由于某些维护作业没有运行,因此该数据库永远不会增长到这种大小。
我已经删除了将近 30GB 的数据。现在数据库大小接近 45GB,可用空间接近 20GB。
这表明数据库的实际大小现在接近 25GB,并且有一些未使用的空间需要返回给操作系统。
我已经为数据库和单个文件(其中 8 个)执行了 DBCC 命令。而且我只设法释放了几个 GB。
我使用的命令如下
DBCC SHRINKDATABASE (N'MyDB');
GO
DBCC SHRINKFILE('Filename1', 0 , TRUNCATEONLY)
GO
DBCC SHRINKFILE('Filename2', 0 , TRUNCATEONLY)
GO
and so on....
但这似乎对数据库大小和可用空间没有影响。
我读了一篇建议重建索引然后收缩数据库的文章将解决这个问题。
但是一旦我缩小了数据库,无论如何我都必须重建索引,因为缩小的数据库会使索引变得一团糟。
我的要求是只留 10% 的空间让 db 增长并释放未使用的空间。然后我计划在那之后重建索引并更新统计信息。
解决这个问题的最佳方法是什么。非常感谢任何正确方向的建议或指示。
先感谢您
您指定是否有特定原因
TRUNCATEONLY
?根据以下文档DBCC SHRINKFILE
:如果这不是您正在寻找的预期行为(听起来不像),那么您可以尝试不设置该选项。
此外,还有其他阻碍数据库文件收缩的因素,例如
text
`ntext\
image` BLOB data。因此,值得研究这些数据类型存在数据的可能性。