有人告诉我,对于数据文件备份在扩展级别操作,对于日志文件,备份在页面级别操作。
我知道数据文件的文件类型始终是“行数据”,并以范围(混合或统一范围)的形式存储,而日志以日志的形式存储,即 VLF(虚拟日志文件)。
请有人详细说明这个概念,因为我对备份如何区分数据和日志有点困惑。如果是完整备份,它将存储写入数据文件的所有已提交更改,对于差异 - 自上次从数据文件完全备份以来的所有更改。对于日志备份 - 所有已提交但未写入数据文件的更改。
感谢您对此的宝贵意见。
有人告诉我,对于数据文件备份在扩展级别操作,对于日志文件,备份在页面级别操作。
我知道数据文件的文件类型始终是“行数据”,并以范围(混合或统一范围)的形式存储,而日志以日志的形式存储,即 VLF(虚拟日志文件)。
请有人详细说明这个概念,因为我对备份如何区分数据和日志有点困惑。如果是完整备份,它将存储写入数据文件的所有已提交更改,对于差异 - 自上次从数据文件完全备份以来的所有更改。对于日志备份 - 所有已提交但未写入数据文件的更改。
感谢您对此的宝贵意见。
不要担心范围和页面。
完整备份包含所有数据页。这些页面不会在单个时间点写入备份。因此 Full 还包含重做/撤消备份期间从最早页面到最新事务提交的更改所需的日志记录。
差异备份会忽略自上次完整备份以来未更改的所有页面。
日志备份包含自上次日志备份以来的所有日志记录。
我想说这种说法并不完全正确。数据文件和日志文件备份都将在页面级别运行。对于差异备份,它扫描差异位图,只备份在完全备份后标记为已更改的数据文件范围。
这取决于您提供的备份命令。当你给出完整备份命令时,SQL Server 知道它必须备份整个数据库和一些事务日志,以确保备份恢复时数据库是一致的。对于日志,它读取事务日志的一部分并备份上次日志备份或完整备份所做的所有更改。