为什么不先进行完整备份就不能进行日志备份?

Sun*_*mar 1 sql-server backup transaction-log

我已经使用 FULL 恢复模型创建了一个新数据库。现在我试图在没有首先进行完整备份的情况下进行日志备份。

我知道 SQL Server 不允许我们这样做,但我想知道SQL Server为什么阻止它?

以下是我用于测试目的的脚本:

CREATE DATABASE TESTING
GO
BACKUP LOG TESTING TO DISK='G:\TESTING_LOG.TRN'
Run Code Online (Sandbox Code Playgroud)

spa*_*dba 7

当数据库切换到FULL恢复时,它的行为就像在SIMPLE恢复中一样,直到您进行完整的数据库备份。在那一刻之前,您无法进行日志备份,因为日志会在 上被截断CHECKPOINT,就像在SIMPLE恢复中发生的那样。

请参阅Paul Randal 撰写的这篇文章以供参考。

日志备份构成了允许恢复整个数据库的链的一部分。链开始与完全备份(完整副本),并可以从另外的差分或日志备份点继续。

恢复示例

完整数据库还原(完整恢复模型)中获取的图像

事务日志备份包含以下所需的信息:

  • 重做自上次完整备份或日志备份以来对数据库的所有已提交更改
  • 撤消进行日志备份时正在进行(尚未提交)的更改

原则上,将有可能单独重新从日志信息的数据库,如果每个日志备份永远是可用的,包括初始创建数据库本身,但这并不是它被实施的方式。

事实上,完整备份是启动恢复路径所必需的。