通过LDF文件实现日志回滚将数据恢复

 时间:2024-10-13 08:29:49

1、 创建数据TESTCREATE DATABASE TEST2) 创建表TEMP_01CREATE TABLE TEMP_01(ID [int] NOT NULL PRIMARY KEY,NAME [datetime] NOT NULL,ADDRESS varchar(50) NOT NULL)

2、 在釉涑杵抑表TEMP_01中插入100条数据use TESTdeclare @i intset @i=1while(@i<=100)begin朐袁噙岿INSERT INTO TEMP_01 VALUES (@i,getdate(),’ADDRESS ‘ + convert(varchar(50),@i))set @i=@i+1end查看数据select * from TEST4) 备份现有的数据库--------做一次完整数据库备份backup database TEST to disk =N’f:\db-recovery\TEST.bak’5) 再次向表TEMP_01 中插入50条数据use TESTdeclare @i intset @i=101while(@i<=150)beginINSERT INTO TEMP_01 VALUES (@i,getdate(),’ADDRESS ‘ + convert(varchar(50),@i))set @i=@i+1end查看数据select * from TEMP_01) 记录下当前正确数据的时间time1当前时间为:2009-8-21 15:18:337) 2分钟后模拟数据文件损坏 停止SQL SERVER 服务 net stop mysqlserver删除TEST.mdf 文件新建文本文件,并重命名为:TEST.mdf启动SQL SERVER 服务 net stop mysqlserver数据库TEST无法打开,证明已损坏备份数据库尾日志启动 sqlcmd 管理工具备份尾日志backup log TEST to disk=N’f:\db-recovery\aaaa.bak’ with no_truncate

3、解释一下no_truncate的作用:如果数据库处于离线状态并且无法启动。尝试执行尾日志备份。由于此时不会发生任何事务,所以 WITH NORECOVER鳔柩寞泷Y 是可选的。如果数据库受损,请使用WITH CONTINUE_AFTER_ERROR 或 WITH NO_TRUNCATE。BACKUP LOG database_name TO [WITH { CONTINUE_AFTER_ERROR | NO_TRUNCATE }重要提示:除非数据库受损,否则不建议使用 NO_TRUNCATE。具体的用法参看MSDN9) 将数据库恢复到time1时间–恢复最后一次正常配置在sqlcmd中执行如下语句进行恢复restore database test from disk=’f:\db-recovery\TEST.bak’ with norecovery restore log test from disk=’f:\db-recovery\aaaa.bak’ with recovery解释一下 with norecovery 和 with recovery的作用NORECOVERY每当您准备对数据库继续执行还原操作时,请使用 NORECOVERY。NORECOVERY 使数据库进入还原状态。这确保了数据库在尾日志备份后不会更改。RECOVERY将数据库从恢复状态改变到正常状态具体参看MSDNhttp://www.db-recovery.com/tong-guo-ldf-wen-jian-shi-xian-ri-zhi-hui-gun-jiang-shu-ju-hui-fu.html数据文件已经恢复!

  • 网易新闻怎么清除缓存
  • Oracle 11g安装到最后报错闪退
  • 如何使用chrome管理账号和密码-轻松使用电脑
  • 使用数据泵从oracle11g向oracle12c迁移用户数据
  • oracle中如何处理引号
  • 热门搜索
    传统文化手抄报图片 我的书屋我的梦手抄报 关于月亮的手抄报 少年强则国强手抄报 英雄事迹手抄报 同讲普通话携手进小康手抄报 环保知识手抄报 新年手抄报图片大全 关于名人的手抄报 防控疫情手抄报内容