DBCC SHRINKFILE不显示任何错误,但不会缩小日志文件

时间:2018-10-22 12:21:52

标签: sql-server logfile

我在SQL Server 2012的开发环境中还原了生产数据库。 我想缩小日志文件以节省硬盘空间。我浏览了SO和其他资源,但没有任何建议对我有用。

我进行了完整的数据库备份和日志备份。我将恢复模式设置为简单。没有建立镜像。但是命令DBCC SHRINKFILE不会收缩文件,但是也不会显示任何错误。相同的命令在同一服务器上的其他数据库上可以很好地工作。我还尝试右键单击->任务->收缩->文件->收缩文件到,并得到相同的结果,即没有错误,但文件大小保持不变。 我还能尝试什么?

1 个答案:

答案 0 :(得分:0)

即使您已经按照正确的说明将数据库设置为SIMPLE恢复模式,也会发生这种情况。通常发生这种情况是因为仍在使用虚拟日志。

如果您运行:

DBCC LOGINFO;

您将查看是否正在使用任何虚拟日志(Status为2)。收缩文件时,将从文件末尾开始物理删除空的虚拟日志,直到其达到第一个使用状态为止。这就是为什么缩小事务日志文件有时会使其部分缩小,但确实会删除您可能期望的所有免费虚拟日志的原因。

如果仍有任何活动事务正在运行,可以通过查询sys.dm_tran_active_transactions进行调试。