Answers:
完全备份包含数据和日志。对于数据,它只是将数据库的每个页面复制到备份中,就像读取页面时一样。然后,它将所有“相关”日志附加到备份介质中。至少,这包括备份操作开始时的LSN与备份操作结束时的LSN之间的所有日志。实际上,通常会有更多的日志,因为它必须在备份开始时包括所有活动事务以及复制所需的日志。请参阅揭穿有关完整数据库备份的两个神话。
还原数据库后,所有数据页都被复制到数据库文件中,然后所有日志页都被复制到日志文件中。此刻数据库不一致,因为它包含的数据页面图像可能彼此不同步。但是现在可以正常恢复了。由于日志包含备份期间的所有日志,因此在恢复结束时,数据库是一致的。
您不能只复制它,因为您在问题中提到的数据库中间副本可能会有变更。
它必须由了解数据库功能的代理来完成,然后通过OS功能进行“快照”,或者可以使用实用程序以安全状态转储数据库(如mysqldump,如果使用mysql)。
否则,您将获得一个可能已损坏的备份,并且只有还原后才能知道。我认为Joel和Jeff最近在最近的StackOverflow播客中谈到了这一点。
您说对了,日志文件很重要。如果日志/日志文件与实际数据不同步,则还原文件将导致损坏。
它可以归结为使用数据库安全状态通过数据库感知的代理或快照应用程序或知道如何正确地将数据库挂接到丢弃数据中的应用程序而知道的备份,而不会干扰数据转储期间的更新,然后再备份生成的文件。
有很多方法可以做到这一点(通常来说,不知道MSSQL的正常运行方式),例如简单地将数据库转储到文件,而将任何更改附加到完成转储后提交的日志文件之后-利用特定于文件系统的快照Windows上的VSS等功能。