SQLServer误解30天,讲了第二十天后销毁日志备份链,需要完整的

SQLServer误解30天,讲了第二十天后销毁日志备份链,需要完整的
误区20:#需要一个完整的备份,日志备份链被破坏后重新启动日志链
错误

自上次事务日志备份以来,事务日志备份将备份所有事务日志。如果没有日志备份,那么从最后一次完整备份开始。有几种类型操作中断事务日志的连续性,也就是说,在新的日志链重新启动之前,SQL Server不能备份日志:

从完全恢复模式或大容量事务日志恢复模式过渡到简单恢复模式
从数据库镜像恢复
no_log或truncate_only时指定日志备份(选项在SQL Server 2008中已取消

更多请看:后备份日志与no_log使用,滥用和非法跟踪标志

下面的例子说明了这一点:

复制代码代码如下所示:
创建数据库logchaintest;

修改数据库logchaintest集完全恢复;

备份数据库logchaintest磁盘= c: sqlskills logchaintest bck'with初始化;

备份日志logchaintest磁盘= c: sqlskills logchaintest_log1 bck'with初始化;

修改数据库logchaintest集回收简单;

修改数据库logchaintest集完全恢复;


结果是:
复制代码代码如下所示:
168页已处理的database'logchaintest的file'logchaintest(位于文件1)。
2页已处理的database'logchaintest的file'logchaintest_log(位于文件1)。
备份数据库成功处理了170页,花费了0.224秒(5.916兆字节/秒)。
3页已处理的database'logchaintest的file'logchaintest_log(位于文件1)。
备份日志成功处理了3页,花费了0.121秒(0.137兆字节/秒)。

我首先创建了一个数据库,并将其设置为完全恢复模式。这是日志链的起点,然后转到简单恢复模式,然后转到完全恢复模式。
接下来,我尝试做日志备份。
复制代码代码如下所示:
备份日志logchaintest磁盘= c: sqlskills logchaintest_log2 bck'with初始化;


错误信息如下:
复制代码代码如下所示:
消息4214,第16级,状态1,第一行
由于当前没有数据库备份,所以无法执行备份日志。
消息3013,第16级,状态1,第一行
备份日志正在终止异常。

SQL Server记录了我销毁日志链的操作,由于日志备份操作以来的上次日志备份,所以无法备份所有日志,因此SQL Server不允许我备份日志。
错误的是我们现在需要完全备份来恢复日志链,但事实上,我只需要做一个差异备份。
复制代码代码如下所示:
备份数据库logchaintest磁盘=想: test_bak logchaintest_log1 bck'with init,差;

备份日志logchaintest磁盘=想: test_bak logchaintest_log1 bck'with初始化;


所得结果:
复制代码代码如下所示:
64页已处理的database'logchaintest的file'logchaintest(位于文件1)。
1页已处理的database'logchaintest的file'logchaintest_log(位于文件1)。
带有差异的备份数据库成功处理了65页,花费了0.119秒(4.267兆字节/秒)。
1页已处理的database'logchaintest的file'logchaintest_log(位于文件1)。
备份日志成功处理了1页,花费了0.052秒(0.150兆字节/秒)。

必须说,这种方式比较酷,因为不需要完整的备份来继续日志备份。
如果您的备份策略包含一个文件或文件组备份,你会需要一个单一的文件差异备份继续日志备份。但前提是,备份的跨度超过了LSN的长度,当然这是一个更深层次的话题。
它也揭示了一个误解!
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部