首次全备及事务备份对数据库的影响,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日志文件。
--------------------------
关于后续的事务日志备份,下次有时间再更新
总结:全备并没有截断事务日志!