首次全备及事务备份对数据库的影响,2014 SpexSql log评估版探索

参考:https://www.cnblogs.com/gered/p/9882367.html

关键词:解析事务日志

新建数据库test3,然后查看日志文件,382行记录

SELECT min([Begin Time]),max([Begin Time]),min([Current LSN]),max([Current LSN])
FROM [sys].[fn_dblog](NULL,NULL)

   查看其最大最小

  

 

建表删除测试

create table test1_1(id int,num int);
insert into test1_1 values(1,1),(2,2),(3,3)
delete test1_1

查看,多了80条,共462条

SELECT *
FROM [sys].[fn_dblog](NULL,NULL) 
where [Current LSN]>='00000020:000000d5:000a'

 

    

 

 

进行全备

backup database test3 to disk = 'C:\backup\test3.bak'

全备之后,只有10行了!,证明什么,证明第一次全备会截断事务日志嘛?截断多少呢?我们看看全备里有多少!

  

 

我们看看备份文件中的日志记录

  

SELECT
* 
--INTO ##temptable
FROM fn_dump_dblog (NULL, NULL, N'DISK', 1, N'C:\backup\test3.bak',
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)

然后查看结果,发现图中关于operation中列,关于create / insert / delete的记录都不见了,且行数也只有198行。

据大佬们说,是全备会省掉很多不必要的记录。

 

  

这个时候,用spexsql 结合bak和ldf,还是可以找到。

单纯用日志文件也可以找到。。这证明了,全备并没有截断事务日志!

但却会对fn_dblog()函数有巨大影响,fn_dump_dblog 我这里看不出来,后续等大佬指点 或者自己了解了再来更新

  

 我尝试用ldf日志文件+spexsql 来进行undo,恢复我被删除的数据(但好像未激活的只能操作10条?)

  

但好像未激活的只能操作10条? 我试试,再插入15条删除

insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
insert into test1_1 values(11,11)
delete test1_1;


结果是这样的,已经彻底乱了
  
运行一下上图这几句插入语句
再来生成Undo
  
  

 

这什么玩意。。


 

看来,spexsql 评估版 只能undo/redo 10条的记录是真的。。

但是记录情况,还是可以完整的查到的。

  

 

 

 

再来,只通过全备的.bak文件查看一下,利用spexsql 生成一下undo。发现无论查看还是生成undo啥也没有,还是不行,得用ldf日志文件。

  

 

  

 

 

--------------------------

关于后续的事务日志备份,下次有时间再更新

 

总结:全备并没有截断事务日志!

posted @ 2019-05-29 19:33  郭大侠1  阅读(234)  评论(0编辑  收藏  举报