原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327
问题:
解决方法:
对于这类问题,主要是找回误操作之前的数据,在2008之前,有个很出名的工具Log Exploer,听说还挺好用的,这个网上大把教程,这里就不多说了。但是唯一遗憾的是,不支持2008及更高版本,这时除了其他第三方工具,那么最常用的就是本文提到的方法——日志尾部备份。本文实验环境2008R2,对于2008及其以上版本可以使用这个方法,其实2005也可以,2000很少用,没试过,只是2008之前可以使用Log Exploer,所以就没必要用这种方法。
步骤:
(1)、检查数据库的恢复模式,如图:
或者使用脚本检查:SELECT recovery_model,recovery_model_descFROM sys.databasesWHERE name ='AdventureWorks'
确保数据库的恢复模式最起码不能为【简单】。至于如何修改成完整模式,我觉得这些应该没必要多说了。
(2)、这里其实隐含另外一步,曾经做过最少一次的完整备份。因为所有类型的备份都基于完整备份,如果没有最少一次完整备份,其他类型的备份都是多余的,所以在这里强调一下,在创建完一个新数据库之后,强烈建议甚至强制做一次完整备份。
SELECT database_name,recovery_model,nameFROM msdb.dbo.backupset
(3)、确保别人不再连接数据库,然后做一次日志尾部备份:/*由于tempdb永远为简单恢复模式,所以不适合做案例。这里使用微软的示例数据库AdventureWorks*/USE AdventureWorksGOIF OBJECT_ID('testRestore') IS NOT NULLDROP TABLE testRestoreGOCREATE TABLE testRestore(id INT IDENTITY(1, 1) ,NAME VARCHAR(50));--插入测试数据:INSERT INTO testRestore(Name)SELECT 'test1'UNION ALLSELECT 'test2'UNION ALLSELECT 'test3'UNION ALLSELECT 'test4'UNION ALLSELECT 'test5'UNION ALLSELECT 'test6'UNION ALLSELECT 'test7'UNION ALLSELECT 'test8'SELECT * FROM testRestore
检查一下结果:
然后来做个删除操作,为了定位是啥时候发生的,我加了一个waitfor命令,让它在某个时间发生,这样恢复的时候就有准确性:
USE AdventureWorksGOWAITFOR TIME '21:45'DELETE FROM dbo.testRestore
USE AdventureWorksGOSELECT * FROM dbo.testRestore




下面就是本文的重点开始,做一次日志备份,最重要是选择【备份日志尾部】




USE MasterGOBACKUP LOG [AdventureWorks] TO DISK = N'E:AdventureWorks.bak' WITH NO_TRUNCATE , NOFORMAT, NOINIT, NAME = N'AdventureWorks-事务日志 备份', SKIP, NOREWIND, NOUNLOAD, NORECOVERY , COMPRESSION, STATS = 10, CHECKSUMGOdeclare @backupSetId as intselect @backupSetId = position from msdb..backupset where database_name=N'AdventureWorks' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'AdventureWorks' )if @backupSetId is null begin raiserror(N'验证失败。找不到数据库“AdventureWorks”的备份信息。', 16, 1) endRESTORE VERIFYONLY FROM DISK = N'E:AdventureWorks.bak' WITH FILE = @backupSetId, NOUNLOAD, NOREWINDGO
此时,数据库会处于【正在还原】的状态 执行结果:

SELECT * FROM sys.sysprocesses WHERE dbid=DB_ID('AdventureWorks')







然后:






总结:


版权声明:本文内容来自CSDN:發糞塗牆,遵循CC 4.0 BY-SA版权协议上原文接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。原文链接:http://blog.csdn.net/dba_huangzj/article/details/8491327如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。
