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

Hei*_*nzi 41 backup sql-server

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

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

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

  • 如果没有:为什么?由于完整数据库备份会启动一个新的备份链,那么在日志中保留完整备份之前完成的事务有什么意义呢?

Pau*_*dal 43

不 - 它绝对不是。该允许日志在FULL或BULK_LOGGED恢复模型明确/截断的是一个日志备份-没有例外。不久前我有这个论点,并发布了一篇长而详细的博客文章,其中包含解释和脚本,您可以在“围绕日志和日志备份的误解:如何说服自己”中向自己证明这一点

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

谢谢


Mat*_*ish 13

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

您必须仔细查看 SQL Server 如何进行备份,但知道备份中不包含进行中/长时间运行的事务(否则备份可能永远不会完成),因此说完整备份online-database 保证使下一个日志备份过时。

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


Nic*_*ias 8

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

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

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

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

他还在这个论坛上回答问题,所以这将是一个更好的权威,然后是我的第二/第三手信息:)


小智 5

人们经常对完整备份和日志备份有误解。为了使备份在FULL备份恢复模型中工作,必须使用 t-logs,因为在备份期间,数据库中可能仍有事务在进行(除非您COLD在关闭数据库时执行所谓的备份)。当数据库处于ARCHIVELOG模式时,Oracle 使用相同的概念。备份的顺序归结为:

  1. 开始备份 - 暂停真实文件中的所有操作并写入 t-logs。
  2. 执行备份 - 所有事务继续,但不会写入真实文件,而是写入 t-logs
  3. 结束备份 - 恢复将数据库事务写入真实文件。
  4. 如有必要,将 T 日志中的内容刷新到真实文件中。

这就是默认情况下不会截断/收缩 t-log 的原因,因为它们是备份阶段事务继续的重要部分。