我的数据库在磁盘上是825 GB,但是未分配的空间大约是500 GB (825 GB* 55%)。


在缩小中的数据库和文件之后,恢复.mdf文件的总大小没有任何改进。但是我观察到不可用空间增加到600 GB,.mdf文件的总大小仍然是825 GB (收缩前,我重建了用于全文索引搜索的表索引)。


是否有减少或回收未分配空间(可用空间)的方法或配置?
一些细节:
发布于 2020-12-14 09:52:58
您需要的是决定您是否有能力分配给这个数据库的空闲空间,或者您需要回收一些磁盘空间。
如果需要回收,则需要收缩mdf文件。你可以用小块来做,但要记住,它会导致碎裂。
连接到数据库引擎。在“标准”栏中,单击“新建查询”。
将以下示例复制并粘贴到“查询”窗口中,然后单击“执行”。此示例使用将UserDB数据库中名为UserDB的数据文件的大小缩小到7MB。
SQL
USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO数据文件收缩的最佳实践:https://littlekendra.com/2016/11/08/shrinking-sql-server-data-files-best-practices-and-why-it-sucks/
发布于 2020-12-14 10:19:21
我一直发现缩小的数据库对于它是否真正释放空间是非常不可预测的。在过去,我不得不一遍又一遍地做这件事,才能让它开始工作。
就像其他人说的,最好的方法是离开它,前提是空间最终需要被使用。
但是,如果确实需要缩小,那么布伦特·奥扎尔提出了一种方法,可以将数据移动到一个新文件,而不是旧的文件。这种方法需要一些空间开销,因为您需要调整新文件的大小。
发布于 2020-12-14 11:00:44
你的心理医生怎么样了?使用GUI?它默认为TRUNCATEONLY,这意味着它不会移动任何数据。也就是说,最后使用的页面将限制文件的大小。在您的示例中,似乎正在使用数据库文件中的最后一个区段。
您需要在没有TRUNCATEONLY的情况下这样做(因此它将数据移到文件的开头),并准备等待非常长的日志时间。
所以,考虑一下这是否值得。这是我很久以前写过的一篇文章:https://karaszi.com/why-you-want-to-be-restrictive-with-shrink-of-database-files
https://dba.stackexchange.com/questions/281455
复制相似问题