Answers:
不-绝对不是。该只允许日志在FULL或BULK_LOGGED恢复模型明确/截断的是一个日志备份-没有例外。我有一阵子争论不休,并发表了一篇冗长而详细的博客文章,其中包含解释和脚本,您可以用来在日志和日志备份的误解中向自己证明:如何说服自己。
随时提出更多问题。顺便说一句,也请参阅我为《 TechNet杂志》撰写的关于理解SQL Server中的日志记录和恢复的长篇文章。
谢谢
完全备份不会截断日志,您必须执行备份日志操作。完整备份不会重新设置日志链-完全会破坏复制/日志传送等。
您必须仔细研究SQL Server的备份方式,但要知道备份中不包含进行中的/长期运行的事务(否则备份可能永远不会完成),因此对某个服务器的完整备份说得不太准确。保证在线数据库可以使下一个日志备份过时。
据我了解,唯一会截断事务日志的是日志备份。
完全备份仅复制足够的日志,以使其在事务上保持一致,因为完成备份操作需要一段时间,并且在这段时间内复制的页面可能已更改。
您仍然需要日志备份以进行时间点恢复。
我没有MSDN可以链接,但是我可以将您链接到Paul Randal的博客,该博客是SQL Server团队的开发人员,写了DBCC CHECKDB和《在线丛书》的一部分。
他还在此论坛上回答了问题,因此,这将比我提供的第二手/第三手信息更好。
人们通常对完整备份和日志备份有误解。为了使备份在FULL
备份恢复模型中起作用,必须使用t日志,因为在备份过程中,数据库中仍可能有事务在进行(除非COLD
在关闭数据库时执行所谓的备份)。当数据库处于ARCHIVELOG
模式下时,Oracle使用相同的概念。备份的顺序归结为:
这就是为什么默认情况下t-log不会被截断/缩小的原因,因为它们是备份阶段事务连续性的重要组成部分。
不要将截断日志与缩小日志混淆。
TRUNCATE是删除日志中最后一个检查点之前的事务(检查点是将事务刷新到数据库本身的时间)。这是使用BACKUP命令完成的。
要缩小日志,请减小实际日志文件的大小。这是使用DBCC命令完成的。
基本上,您不需要每次都自动缩小事务日志,因为事务日志需要空间才能工作,并且如果您自动截断,它将保持几乎相同的大小。