SQL SERVER 数据恢复 误删等

BACKUP   DATABASE   sqlTest   TO   DISK= 'c:/sqlTest.bak '   WITH   FORMAT 
GO

update autoIncrement set name='整数(10)' where id like '%0'

select * from autoIncrement;

select COUNT(*) from autoIncrement;
--480
select GETDATE();
--2011-08-31 22:41:46.557
delete from autoIncrement where id<120;
--(117 行受影响)
select GETDATE();
--2011-08-31 22:43:39.990
--
修改 :整数(20)
select GETDATE();
--2011-08-31 22:47:38.917

--首先,备份事务日志(使用事务日志才能还原到指定的时间点),所以当如果吴操作的时候,首先要记录下当前的时间
--
并且备份事务日志文件
BACKUP LOG sqlTest TO DISK= 'c:/sqlTest_log.bak ' WITH FORMAT
GO

--接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)
RESTORE DATABASE sqlTest FROM DISK= 'c:/sqlTest.bak ' WITH REPLACE,NORECOVERY
GO
--执行上一步的时候出现错误,然后把当前用户退出,然后重新登录执行就ok了


--将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早 )看情况,应该执行完上一步的以后,
--
-数据库不能操作了,知道下一步
RESTORE LOG sqlTest FROM DISK= 'c:/sqlTest_log.bak ' WITH RECOVERY,STOPAT='2011-08-31 22:40:01'
GO

--2011-08-31 22:48:01为要恢复到的时间点,至此恢复工作完成
--
其中比较多的问题可能是:
--
RESTORE 无法处理数据库 '********',因为它正由此会话使用。建议在执行此操作时使用 master 数据库。
--
RESTORE DATABASE 正在异常终止
--
解决办法就是关掉所有的链接
--
本次测试是在sqlserver 2008 版本上测试通过。其中如果要恢复的话,应该要有一个完成的备份


use Db
select * from db.dbo.TB_test

posted on 2011-08-31 23:35  cfd406635982  阅读(3673)  评论(0编辑  收藏  举报