http://technet.microsoft.com/zh-cn/dd939047(zh-cn).aspx
最近收到了一些关于收缩日志的问题:已经执行了backup log命令,但执行shrink命令后仍然无法将日志文件收缩到指定大小,日志文件根本没有收缩/只收缩了一部分
执行dbcc loginfo命令,可能会有如下结果
您的日志尾部的虚拟日志文件为2状态。
当执行dbcc shrinkfile命令后,38,39位置的虚拟文件会被立刻收缩掉,由于37位置的虚拟文件为2(数据库日志文件至少由一个状态为2的虚拟日志文件),所以不会被收缩掉,sqlserver会在37位置处添加哑日志记录(dummy log record),使整个日志文件的尾部和开头(1位置)形成环状。当有新的记录插入时,日志信息会被记录在位置1的虚拟日志文件中...
日志文件的工作机制导致您在这种情况下无法进行收缩,解决办法:再次执行backup log命令,迫使2状态的虚拟日志文件转移到日志文件的开始部分.
代码下载: