如何从bak文件中还原出日志文件

时间:2021-04-20 17:24:47
是从外面租用的空间中产生的一个BAK文件,下载到本机中,想查看其中的日志,了解操作记录(有Log Explorer了),但是看不到历史操作记录啊 ,只能看到今天的,这个数据库的操作历史看不到,肯定之前有操作记录,因为我上周还插入数据的

1,是不是空间上产生备份文件时,精简了日志文件?
2.这种操作我试过了,能还原成功,数据库数据是新的,但是日志看不到之前的操作记录

打开SQL SERVER数据库,其中有一个叫“数据库”的目录,右键点击“数据库”,在弹出的窗口中选择“所有任务”=》在新弹出的菜单中选择还原数据库=》在弹出窗口中输入还原数据库的名字,点击从设备=》点击选择设备=》选择从磁盘添加文件.bak.=>确定................



到底BAK文件怎么还原,才能看到之前的日志文件,有什么注意点?谢谢!

12 个解决方案

#1


备份的时候会截断事务日志的.

#2


备份文件=数据本身+备份期间的日志

备份期间的日志是没办法看的.

#3


那空间上的数据操作日志怎么可以看到?求教

#4


打开Log Explorer,按操作提示做咯.

都是界面操作的,文字无法表达喔.

#5


Log   Explorer

#6


使用说明 
Log   Explorer 


http://www.yiii.net/app/servlet/net.yiii.club.DownloadServlet?Information_Id=I00023471 
解压缩密码   www.heibai.net 


注册机产生的是注册码,是两个 

用解压缩密码解开后,压缩包里也有一个注册机的 
打开log   explorer   file=> attach   log   file-> 选择服务器和登陆方式-> connect-> 
选择数据库-> attach-> 左面对话框中browse-> view   log-> 就可以看到log记录了 
想恢复的话:   右键log记录   undo   transation-> 选择保存文件名和路径-> 然后打开该文件到查询分析器里执行 
T-sql代码就可以了 

例如   如果log是delete   table   where   ...的话,生成的文件代码就是insert   table   .... 


系统中有一个数据库DB1,系统正在使用的过程中,不小心删除了某表T1的数据 
现我可以按照用完整备份文件加日志备份时间点TIME1恢复的方法来恢复该数据库 

但问题出在该数据库一直还必须在使用中,所以除了你删除了数据的TA表外,其它的 
表的数据你不能只是恢复到错误时间点TIME1处,因为,TIME1以后也有数据变化 

解决这个问题有两个方法 
1:用LOG   EXEPLORE   可以轻松搞定 

2:先建立一个数据库DB2,将完整备份文件恢复到DB2中,再用DB2中的T1数据来更新 
      DB1中的T1数据即可. 


--查看备份信息 
RESTORE   FILELISTONLY   FROM   DISK   = 'C:\Program   Files\Microsoft   SQL   Server\MSSQL\BACKUP\db1_backup ' 

--还原旧的备份   
RESTORE   DATABASE   db2   FROM   DISK   =   'C:\Program   Files\Microsoft   SQL   Server\MSSQL\BACKUP\db1_backup '   with   replace,norecovery, 
move   'db1_Data '   to   'C:\Program   Files\Microsoft   SQL   Server\MSSQL\data\db2_data.mdf ', 
  move   'db1_Log '   to   'C:\Program   Files\Microsoft   SQL   Server\MSSQL\data\db2_log.ldf '   

--还原数据日志到时间点 
restore   log     db2     from   disk= 'db_log_backup '     with   stopat= '2003/4/22   9:57 ' 


----------------- 
log   explorer使用的一个问题 

1)对数据库做了完全   差异   和日志备份 
备份时选用了删除事务日志中不活动的条目 
再用Log   explorer打试图看日志时 
提示No   log   recorders   found   that   match   the   filter,would   you   like   to   view   unfiltered   data 
选择yes   就看不到刚才的记录了 


如果不选用了删除事务日志中不活动的条目 
再用Log   explorer打试图看日志时,就能看到原来的日志 

2)修改了其中一个表中的部分数据,此时用Log   explorer看日志,可以作日志恢复 

3)然后恢复备份,(注意:恢复是断开log   explorer与数据库的连接,或连接到其他数据上, 
否则会出现数据库正在使用无法恢复) 
恢复完后,再打开log   explorer   提示No   log   recorders   found   that   match   the   filter,would   you   like   to   view   unfiltered   data 
选择yes   就看不到刚才在2中修改的日志记录,所以无法做恢复. 

#7


问题是空间上下载的BAK文件能不能还原到本地,并且含有之前的数据操作日志?这是关键!

#8


你这个BAK文件也许是个增量备份文件,就是说以前备份的内容,在这次备份中不再重复.

#9


为何"空间上下载的BAK文件能不能还原到本地"?

restore database ... 记得加move.. to..参数喔!

#10


要版本一样的

#11


你可以看一下,还原后的数据库ldf文件有多大,实际使用了多大,要是只有几兆的已用空间,应该是空间中的数据库在备份BAK的时候已经截断了日志文件,这种情况下日志文件是找不回来的。

#12


数据库的恢复模式是不是简单恢复模式

#1


备份的时候会截断事务日志的.

#2


备份文件=数据本身+备份期间的日志

备份期间的日志是没办法看的.

#3


那空间上的数据操作日志怎么可以看到?求教

#4


打开Log Explorer,按操作提示做咯.

都是界面操作的,文字无法表达喔.

#5


Log   Explorer

#6


使用说明 
Log   Explorer 


http://www.yiii.net/app/servlet/net.yiii.club.DownloadServlet?Information_Id=I00023471 
解压缩密码   www.heibai.net 


注册机产生的是注册码,是两个 

用解压缩密码解开后,压缩包里也有一个注册机的 
打开log   explorer   file=> attach   log   file-> 选择服务器和登陆方式-> connect-> 
选择数据库-> attach-> 左面对话框中browse-> view   log-> 就可以看到log记录了 
想恢复的话:   右键log记录   undo   transation-> 选择保存文件名和路径-> 然后打开该文件到查询分析器里执行 
T-sql代码就可以了 

例如   如果log是delete   table   where   ...的话,生成的文件代码就是insert   table   .... 


系统中有一个数据库DB1,系统正在使用的过程中,不小心删除了某表T1的数据 
现我可以按照用完整备份文件加日志备份时间点TIME1恢复的方法来恢复该数据库 

但问题出在该数据库一直还必须在使用中,所以除了你删除了数据的TA表外,其它的 
表的数据你不能只是恢复到错误时间点TIME1处,因为,TIME1以后也有数据变化 

解决这个问题有两个方法 
1:用LOG   EXEPLORE   可以轻松搞定 

2:先建立一个数据库DB2,将完整备份文件恢复到DB2中,再用DB2中的T1数据来更新 
      DB1中的T1数据即可. 


--查看备份信息 
RESTORE   FILELISTONLY   FROM   DISK   = 'C:\Program   Files\Microsoft   SQL   Server\MSSQL\BACKUP\db1_backup ' 

--还原旧的备份   
RESTORE   DATABASE   db2   FROM   DISK   =   'C:\Program   Files\Microsoft   SQL   Server\MSSQL\BACKUP\db1_backup '   with   replace,norecovery, 
move   'db1_Data '   to   'C:\Program   Files\Microsoft   SQL   Server\MSSQL\data\db2_data.mdf ', 
  move   'db1_Log '   to   'C:\Program   Files\Microsoft   SQL   Server\MSSQL\data\db2_log.ldf '   

--还原数据日志到时间点 
restore   log     db2     from   disk= 'db_log_backup '     with   stopat= '2003/4/22   9:57 ' 


----------------- 
log   explorer使用的一个问题 

1)对数据库做了完全   差异   和日志备份 
备份时选用了删除事务日志中不活动的条目 
再用Log   explorer打试图看日志时 
提示No   log   recorders   found   that   match   the   filter,would   you   like   to   view   unfiltered   data 
选择yes   就看不到刚才的记录了 


如果不选用了删除事务日志中不活动的条目 
再用Log   explorer打试图看日志时,就能看到原来的日志 

2)修改了其中一个表中的部分数据,此时用Log   explorer看日志,可以作日志恢复 

3)然后恢复备份,(注意:恢复是断开log   explorer与数据库的连接,或连接到其他数据上, 
否则会出现数据库正在使用无法恢复) 
恢复完后,再打开log   explorer   提示No   log   recorders   found   that   match   the   filter,would   you   like   to   view   unfiltered   data 
选择yes   就看不到刚才在2中修改的日志记录,所以无法做恢复. 

#7


问题是空间上下载的BAK文件能不能还原到本地,并且含有之前的数据操作日志?这是关键!

#8


你这个BAK文件也许是个增量备份文件,就是说以前备份的内容,在这次备份中不再重复.

#9


为何"空间上下载的BAK文件能不能还原到本地"?

restore database ... 记得加move.. to..参数喔!

#10


要版本一样的

#11


你可以看一下,还原后的数据库ldf文件有多大,实际使用了多大,要是只有几兆的已用空间,应该是空间中的数据库在备份BAK的时候已经截断了日志文件,这种情况下日志文件是找不回来的。

#12


数据库的恢复模式是不是简单恢复模式