数据库运行正常的时候,我们可以手动或自动地在指定的时间点进行备份操作。但是在发生灾难后,如果希望将数据恢复到灾难发生的时间点的状态,就需要拥有最后一次数据库备份与灾难发生之间的数据变化,这时就需要通过尾日志备份来实现。
与正常日志备份相似,尾日志备份将捕获所有尚未备份的事务日志记录。但尾日志备份与正常日志备份在以下几个方面会有所不同。
如果数据库被损坏或者是离线,就可以尝试进行尾日志备份。在日志文件未被破坏且数据库不包含任何大容量日志更改的情况下,尾日志备份才会成功。如果数据库包含要备份的、在记录间隔期间执行的大容量日志更改,则仅在所有数据文件都存在且未损坏的情况下,尾日志备份才会成功。
尾日志备份可以使用COPY_ONLY选项独立于定期日志备份进行创建。仅复制备份不会影响备份日志链。事务日志不会被尾日志备份截断,并且捕获的日志将包括在以后的正常日志备份中。这样就可以在不影响正常日志备份过程的情况下,进行尾日志备份。
如果数据库损坏,尾日志可能会包含不完整的元数据,这是因为某些通常可用于日志备份的元数据在尾日志备份中可能会不可用。使用CONTINUE_AFTER_ERROR进行的日志备份,可能会包含不完整的元数据,这是因为此选项将通知进行日志备份而不考虑数据库的状态。
创建尾日志备份时,也可以同时使数据库变为还原状态。使数据库离线可保证尾日志备份包含对数据库所做的所有更改,并且随后不对数据库进行更改。当需要对某个文件执行离线还原时,以便与数据库匹配,或按照计划故障转移到日志传送备用服务器并希望切换回来时,会用到此操作。
要实现对数据库的尾日志备份,则需要在BACKUP LOG语句中使用NO_TRUNCATE选项。使用此选项,相当于同时指定COPY_ONLY和CONTINUE_AFTER_ERROR。Transact-SQL代码如下:
- --将数据库尾事务日志备份到物理备份设备
- BACKUP LOG test
- TO disk ='c:\bacup\test.bak'
- WITH NO_TRUNCATE
- GO
- --将数据库尾事务日志备份到逻辑备份设备
- BACKUP LOG test
- TO test ----设备名称
- WITH NO_TRUNCATE
- GO
文章评论