2016-03-18 15:18 整理,未发布
日志传送实际是备份日志、拷贝日志、还原日志。我们可以将备份好的日志文件拷贝一份到其他存储,再结合必要的完整备份,就可以用来还原数据。
如果做了日志传送,还需对其做普通的日志备份。那就要考虑清楚,普通的日志备份不能截断事务日志,不然日志传送中的日志链就会中断。
如果普通的事务日志带上with copy_only选项,它不会截断日志
BACKUP LOG WITH COPY_ONLY --1 带COPY_ONLY日志备份
BACKUP LOG --2 日志传送
BACKUP LOG WITH COPY_ONLY --3 带COPY_ONLY日志备份
第2步lastlsn=第3步的firstlsn,也就是要第3步的文件需在第2步的文件上才能还原
如果没有类似第2步的普通日志备份,那backup log with copy_only类似差异备份,备份保存自上次日志备份(有截断日志)以来所有的变更。只要没有截断(完整/差异备份不会影响),日志备份(copy_only)文件越来越大。
因此在日志传送和日志备份(copy_only)并存的情况下,还原顺序应该是:最近的完整备份+最近的完整备份与最近的日志备份(copy_only)之间的日志传送所生成的日志备份+最近的日志备份(copy_only)。
--判断某日志备份是否能应用到当前正在还原的 DB上
--判断某日志备份是否能应用到当前正在还原的 DB上 USE master ; GO DECLARE @MyBitVar BIT; EXEC sp_can_tlog_be_applied @backup_file_name = N'D:logbak_log_copy5.bak' , @database_name = N'logbakre', @result = @MyBitVar OUTPUT; SELECT @MyBitVar GO