阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

用备份事务日志尾部来还原MSSQL数据库误操作

99次阅读
没有评论

共计 1077 个字符,预计需要花费 3 分钟才能阅读完成。

有时会碰到同事误删或误更新了某些数据,现在把恢复数据的方法之一:备份日志尾部,简单记录一下。

1. 首先检查你要还原的数据库的恢复模式是否为完整,如果不是改为完整恢复模式。

用备份事务日志尾部来还原 MSSQL 数据库误操作

其次,确保该数据库至少做过一次完整备份,因为所有其他类型的备份都是基于完整备份的,如果不确定的话可以通过下面这个语句来查看数据库的备份情况:

select    database_name,recovery_model,name,backup_finish_date
from      msdb.dbo.backupset
where    database_name=’SmartDev’
order by backup_finish_date desc,name

得到的结果:

用备份事务日志尾部来还原 MSSQL 数据库误操作

2. 拿下面这个表来做例子:

select * from dbo.Office

用备份事务日志尾部来还原 MSSQL 数据库误操作

有三条记录,现在把数据删掉:

delete from dbo.Office

用备份事务日志尾部来还原 MSSQL 数据库误操作

数据清空了,现在要想办法把数据恢复过来,我们要做一次日志尾部备份,这里要确保没有人再连接到该数据库上。

用备份事务日志尾部来还原 MSSQL 数据库误操作

特别是 Media Options 这个选项页中的各种选项要勾上,比如下图这样。

用备份事务日志尾部来还原 MSSQL 数据库误操作

点 OK 执行,如果出现下面的提示,则表示此时还有别的进程连接在该数据库上,因为备份日志尾部会使数据库处于还原状态,如果不断开所有连接是执行不了的。

用备份事务日志尾部来还原 MSSQL 数据库误操作

清除掉所有连接后再执行,备份成功后看看数据的状态,表示正在还原中。

用备份事务日志尾部来还原 MSSQL 数据库误操作

3. 进行还原数据库操作。首先还原完整数据库备份,这时要选择最近的一次完整备份,

用备份事务日志尾部来还原 MSSQL 数据库误操作

并在 Options 选项页中,Recovery state 要选择第二项。

用备份事务日志尾部来还原 MSSQL 数据库误操作

成功后看数据库还是下面这个状态,

用备份事务日志尾部来还原 MSSQL 数据库误操作

接下来还原日志文件,在指定还原点时只要把时间指定到误操作之前的时间就可以。

用备份事务日志尾部来还原 MSSQL 数据库误操作

 Options 选项页中,因为日志文件是最后一个还原的文件,所以 Recovery state 选择第一项。

用备份事务日志尾部来还原 MSSQL 数据库误操作

 还原成功后 用备份事务日志尾部来还原 MSSQL 数据库误操作

再查询,表数据已经恢复。

用备份事务日志尾部来还原 MSSQL 数据库误操作

 

4. 最后总结一下,我尝试了多种情况,因为有可能存在多个完整备份,而这中间又可能有多个差异备份,得出以下几点:

a. 在还原完整数据库备份时,一定要选择离误操作时间最近的一次,如果这个备份文件找不到了,而去找次一个最近的备份是还原不成功的。

b. 如果在最近一次完整备份和误操作时间之间还有多个差异备份的话,可以不用逐步还原这些差异备份再还原日志备份,而是在还原了最近一次完整备份后直接还原日志备份即可。

c. 如果在还原的任何一部出现错误还原不成功,而数据库又处于 用备份事务日志尾部来还原 MSSQL 数据库误操作 这种不可用状态的话,可以用下面的语句恢复。

RESTORE DATABASE SmartDev WITH RECOVERY

可能还有些情况没尝试过,目前先只做到这些。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1077字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中