SQL Server(2005/2008):完整备份是否会在完整恢复模式下截断日志

SQL Server(2005/2008):完整备份是否会在完整恢复模式下截断日志

我刚刚阅读了大量 MSDN 文档,我想我了解了不同的恢复模型和备份链的概念。我还有一个问题:

完整数据库备份是否会截断事务日志(使用完整恢复模式)?

  • 如果是:MSDN 中哪里提到了这一点?我所能找到的只是只有 BACKUP LOG 会截断日志。

  • 如果不是:为什么?由于完整数据库备份会启动新的备份链,那么保留已完成的事务有什么意义呢?日志中的完整备份是否处于活动状态?

答案1

不,绝对不是。仅有的在 FULL 或 BULK_LOGGED 恢复模式中,允许日志清除/截断的唯一方法是日志备份 - 没有例外。我之前有过这个论点,并发表了一篇很长很详细的博客文章,其中包含解释和脚本,您可以使用它来证明这一点关于日志和日志备份的误解:如何说服自己

欢迎随时提出更多问题。顺便说一句 - 另请参阅我为 TechNet 杂志撰写的长篇文章了解 SQL Server 中的日志记录和恢复

谢谢

答案2

完整备份不会截断日志,您必须执行备份日志操作。完整备份不会重新设置日志链 - 否则会彻底搞砸复制/日志传送等。

您必须仔细查看 SQL Server 如何进行备份,但要知道正在进行/长时间运行的事务不包含在备份中(否则备份可能永远不会完成),因此说在线数据库的完整备份保证下一次日志备份过时并不十分准确。

http://msdn.microsoft.com/en-us/library/ms175477.aspx

答案3

据我了解截断事务日志的唯一方法是日志备份

完整备份仅复制足够的日志以使其在事务上保持一致,因为备份操作需要一段时间才能完成,并且在此期间,复制的页面可能已发生变化。

您仍然需要日志备份来进行时间点恢复。

我没有 MSDN 链接,但我可以给你链接Paul Randal 的博客,他是 SQL Server 团队的一名开发人员,编写了 DBCC CHECKDB 和部分联机丛书。

他还在这个论坛上回答问题,所以这比我提供的第二手/三手信息更权威:)

答案4

不要将截断日志与缩小日志相混淆。

  • TRUNCATE 是删除日志中最后一个检查点之前的事务(检查点是将事务刷新到数据库本身的时间)。这是使用 BACKUP 命令完成的。

  • 收缩日志就是减少实际日志文件的大小。这是使用 DBCC 命令完成的。

相关内容