我有一个数据库文件,目前是150GB,但只有75GB正在使用 – 这是因为我把所有的索引(其他75GB)移动到一个新的数据文件。 我想从这个数据文件中至less回收一部分空间,但是当我试图缩小文件时,它会无限期地“执行”,最终会因为networking中断或其他我不能控制的内容而被取消一天运行)。 即使使用“缩小到特定的大小”function,并指定它只是修剪10MB从来没有似乎返回 – 它只是坐直到过程中断。
还有另外一种方法可以回收这个空间,即使是一次一点的收集吗?
编辑:有人张贴链接解释为什么我不应该缩小我的数据库。 我明白了,我想缩小它。 这个服务器上的磁盘空间非常重要,而且数据库在很长一段时间内不会再次扩展到这个未使用的空间中 – 正如我之前所说的,我将索引从数据文件中移出来释放这个空间,所以现在浪费了。
不,使用DBCC SHRINKFILE ('filename', target_size)是正确的方法。
如果你想在“块”中做到这一点,你可以设置逐渐减小的目标尺寸,或者让它在取消之前尽可能长地运行。
几点意见:
DBCC SHRINKFILE ('filename', TRUNCATEONLY) 。 它应该恢复文件末尾已经释放的所有空间(请参阅我之前的观点) 我们已经在我们的环境中find了几个select:
祝你好运
如果您不想简单地回收空间(您明确拒绝的空间),但坚持试图缩小数据库,这需要很长时间,而且您的事务日志扩展应该只是覆盖任何空间你从数据库中回收。 作为一个奖励,看看你的数据库performance后通过地板。 如果保罗·兰德尔不能说服你(哪个JL评论过,但我会在这里重新发布: 为什么你不应该缩小你的数据文件 ,缩小是一个可怕的想法,我不确定任何人都可以。 SQL服务器(或至less可以改变,所以它的工作方式像保罗build议)在下一个版本。