variable Asked: 2018-10-16 01:40:39 +0800 CST2018-10-16 01:40:39 +0800 CST 2018-10-16 01:40:39 +0800 CST 为什么简单恢复模式不支持日志备份或尾日志备份? 772 假设发生崩溃,那么我们可以使用完整备份和尾日志备份——因为如果有检查点,那么数据已经写入数据库数据文件并从事务日志中刷新。如果还没有检查点,那么日志仍将存在于事务日志文件中。那么在这种恢复模式下恢复可能吗? sql-server recovery-model 2 个回答 Voted Best Answer gbn 2018-10-16T01:54:44+08:002018-10-16T01:54:44+08:00 FULL 备份和崩溃之间写入的日志将在某个时候被覆盖 它们不会与 BACKUP LOG 一起保存。 我大胆描述简单 每个事务仍然写入事务日志,但一旦事务完成并且数据已写入数据文件,事务日志文件中使用的空间现在 可由新事务重新使用。 来自SQL Server 文档 自动回收日志空间以保持较小的空间需求,从根本上消除了管理事务日志空间的需要。 从理论上讲,如果 LSN 匹配,则在仅包含少量事务的完整备份之后发生的崩溃可能会起作用。 在实践中,这几乎永远不会保证发生,所以为了一致性(和错误的希望)最好在简单恢复模型中禁止这种情况 sepupic 2018-10-16T04:08:02+08:002018-10-16T04:08:02+08:00 除了gbn已经提到的原因,当日志自上次完整备份以来可能已经被覆盖tail-of-the-log时,还有另一个原因不允许simple恢复模式。 当您的数据库处于simple恢复模式时,一些操作是minimally logged。在这里,您可以看到最少的操作Operations That Can Be Minimally Logged,以及所需的条件:The Data Loading Performance Guide 为了支持大量数据加载方案,SQL Server 实现了最少的日志操作。与使用事务日志来跟踪每一行更改的完全记录的操作不同,最少记录的操作仅跟踪范围分配和元数据更改。 我强调了重要的部分,这将帮助您了解您的案例不完整。独立于checkpoint,可能存在仅用“分配页面”填充日志的最少日志记录操作,而无需在日志中写入实际数据,在这种情况下,tail-of-the-log backup. 想象一下,崩溃发生在一个最少记录的操作和数据磁盘无法访问之后。如果您现在尝试执行操作log backup,它还应该访问数据文件以备份由最少日志记录操作分配的范围,但无法完成。 这种情况只会发生在simple和bulk logged恢复模型中,在full模型中,日志包含服务器重建任何操作所需的所有信息。 在simple恢复模式下,即使允许进行这样的备份,也不可能从该备份中恢复。 在bulk logged模型+最少日志操作的情况下,你可以尝试做这种tail-of-the-log备份,但2008服务器和之前不允许你做这样的备份。从开始,2008 R2即使您能够执行日志尾部备份,甚至从中恢复,这也会导致数据库不一致,因为新分配的页面将不包含正确的数据。所以你可以认为不仅在恢复模式 ma 中tail-of-the-log不允许备份,而且在切换到+操作 + 数据文件不可访问之后。simplefullbulk loggedminimally logged
FULL 备份和崩溃之间写入的日志将在某个时候被覆盖
它们不会与 BACKUP LOG 一起保存。
我大胆描述简单
来自SQL Server 文档
从理论上讲,如果 LSN 匹配,则在仅包含少量事务的完整备份之后发生的崩溃可能会起作用。
在实践中,这几乎永远不会保证发生,所以为了一致性(和错误的希望)最好在简单恢复模型中禁止这种情况
除了gbn已经提到的原因,当日志自上次完整备份以来可能已经被覆盖
tail-of-the-log
时,还有另一个原因不允许simple
恢复模式。当您的数据库处于
simple
恢复模式时,一些操作是minimally logged
。在这里,您可以看到最少的操作Operations That Can Be Minimally Logged,以及所需的条件:The Data Loading Performance Guide我强调了重要的部分,这将帮助您了解您的案例不完整。独立于
checkpoint
,可能存在仅用“分配页面”填充日志的最少日志记录操作,而无需在日志中写入实际数据,在这种情况下,tail-of-the-log backup
.想象一下,崩溃发生在一个最少记录的操作和数据磁盘无法访问之后。如果您现在尝试执行操作
log backup
,它还应该访问数据文件以备份由最少日志记录操作分配的范围,但无法完成。这种情况只会发生在
simple
和bulk logged
恢复模型中,在full
模型中,日志包含服务器重建任何操作所需的所有信息。在
simple
恢复模式下,即使允许进行这样的备份,也不可能从该备份中恢复。在
bulk logged
模型+最少日志操作的情况下,你可以尝试做这种tail-of-the-log
备份,但2008
服务器和之前不允许你做这样的备份。从开始,2008 R2
即使您能够执行日志尾部备份,甚至从中恢复,这也会导致数据库不一致,因为新分配的页面将不包含正确的数据。所以你可以认为不仅在恢复模式 ma 中tail-of-the-log
不允许备份,而且在切换到+操作 + 数据文件不可访问之后。simple
full
bulk logged
minimally logged