首次全备及事务备份对数据库的影响,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:ackup	est3.bak'

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

  

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

  

SELECT
* 
--INTO ##temptable
FROM fn_dump_dblog (NULL, NULL, N'DISK', 1, N'C:ackup	est3.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日志文件。

  

  

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

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

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

原文地址:https://www.cnblogs.com/gered/p/10945736.html