LDF 文件中的日志是否在检查点后被删除?

Ame*_*wan 1 sql-server checkpoint

使用fn_dblog我可以获得我的数据库的在线事务日志的活动部分。

但是在每个检查点之后,我只能看到 2 个条目显示检查点的开始和检查点LOP_BEGIN_CKPT的结束LOP_END_CKPT

我想知道之前的日志是在每个检查点之后删除还是只是因为dbi_checkptLSN位于引导页面中的值指示最新的 LSN而被忽略?

如果dbi_checkptLSN是我能够移动该指标的结果,如果是,如何移动?

如果没有,并且没有删除日志,我如何访问以前的日志?

Mar*_*ith 6

如果您的数据库处于简单恢复状态,则日志可能会在检查点之后被截断

尽管由于可以延迟日志截断的因素(最明显的是开放事务)中讨论的原因,这并不总是发生

要查看日志的非活动部分,您可以使用未记录的DBCC log命令。

DBCC log(0,1) /*First parameter is database id with 0 as current DB*/
Run Code Online (Sandbox Code Playgroud)

或跟踪标志 2537 与 sys.fn_dblog

DBCC TRACEON(2537)

SELECT *
FROM sys.fn_dblog(NULL,NULL)
Run Code Online (Sandbox Code Playgroud)

当然,不能保证您正在寻找的东西会在那里。它可能随时被覆盖。

  • 另一个对日志使用很多的命令是“DBCC LOGINFO”,它显示所有当前的 VLF。状态 2 VLF 仍处于活动状态并等待被截断。 (3认同)