it-swarm.cn

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

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

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

  • 如果是:MSDN在何处提及?我所能找到的就是只有BACKUP LOG会截断日志。

  • 如果没有:为什么?由于完整的数据库备份会启动新的备份链,因此在日志中保持已完成的事务之前完整备份的意义何在?

41
Heinzi

不-绝对不是。 only允许在FULL或BULK_LOGGED恢复模型中清除/截断日志的操作是日志备份-没有例外。我前不久有这个论点,并在博客上发表了详尽而详尽的文章,其中包含解释和脚本,您可以在 关于日志和日志备份的误解:如何说服自己 证明给自己。 。

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

谢谢

43
Paul Randal

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

您必须仔细研究SQL Server的备份方式,但要知道备份中不包含进行中的/长期运行的事务(否则备份可能永远不会完成),因此说对服务器的完整备份并不太准确。保证在线数据库可以使下一个日志备份过时。

http://msdn.Microsoft.com/zh-cn/library/ms175477.aspx

13
Matt Rogish

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

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

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

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

他还在此论坛上回答了问题,因此,这将比我提供的第二手/第三手信息更好。

8
Nick Kavadias

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

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

这就是为什么默认情况下t-log不会被截断/缩小的原因,因为它们是备份阶段事务连续性的重要组成部分。

5
Peter

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

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

  • 要缩小日志,请减小实际日志文件的大小。这是使用DBCC命令完成的。

1
Lee Matthews

基本上,您不需要每次都自动缩小事务日志,因为事务日志需要空间才能工作,并且如果您自动截断,它将保持几乎相同的大小。

1
zz