SQL SERVER 数据文件损坏的恢复

 

SQL SERVER 数据文件损坏的恢复

数据库的恢复原理与 SQL SERVER 数据误操作的恢复 原理理相同。

恢复数据到即时点有两个前提:

n         正确的完整数据库的最后一次备份

正确完整的数据库备份是指使用Backup语句、维护计划、手动备份的备份文件,不支持基于数据库文件*.mdf的备份;

日志文件可访问;

n         正确的即时点

即所要恢复到数据的时间点

实例:

1.         创建数据DBTEST

2.         创建表TBL_TEST

3.         在表TBL_TEST中插入100条数据

4.         备份现有的数据库

5.         再次向表TBL_TEST中插入50条数据

6.         记录下当前正确数据的时间d1

7.         2分钟后模拟数据文件损坏

8.         备份数据库尾日志

9.         将数据库恢复到d1时间


1)      创建数据DBTEST

CREATE DATABASE DBTEST

2)      创建表TBL_TEST

CREATE TABLE TBL_TEST

(

   ID [int] NOT NULL PRIMARY KEY,

   NAME [datetime] NOT NULL,

   ADDRESS varchar(50) NOT NULL

)

 

 

 

 

 

 

3)      在表TBL_TEST中插入100条数据

use DBTEST

declare @i int

set @i=1

while(@i<=100)

begin

   INSERT INTO TBL_TEST VALUES (@i,getdate(),'ADDRESS ' + convert(varchar(50),@i))

   set @i=@i+1

end

select * from TBL_TEST

 

 

 

 

 

 

 

 

 

 

4)      备份现有的数据库


--做一次完整数据库备份

backup database DBTEST to disk='C:"DBTEST.bak'

 

 

 

5)      再次向表TBL_TEST中插入50条数据

use DBTEST

declare @i int

set @i=101

while(@i<=150)

begin

   INSERT INTO TBL_TEST VALUES (@i,getdate(),'ADDRESS ' + convert(varchar(50),@i))

   set @i=@i+1

end

select * from TBL_TEST

 

 

 

 

 

 

 

 

 

6)      记录下当前正确数据的时间d1

当前时间为:2008-5-26 20:37

 

 

7)      2分钟后模拟数据文件损坏

停止SQL SERVER 服务 net stop mysqlserver

删除DBTEST.mdf 文件

新建文本文件,并重命名为:DBTEST.mdf

启动SQL SERVER 服务 net stop mysqlserver

数据库DBTEST无法打开,证明已损坏

 

 

 

 

 

 

8)      备份数据库尾日志

启动 sqlcmd 管理工具

备份尾日志

backup log dbtest to disk='c:"aaaa.bak' with no_truncate

 

 

 

 

9)      将数据库恢复到d1时间

--恢复最后一次正常配置

sqlcmd中执行如下语句进行恢复

restore database dbtest from disk='c:"dbtest.bak' with norecovery

restore log dbtest from disk='c:"aaaa.bak' with recovery

\数据文件已经恢复!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值