SQLServer恢复表级数据

        使用 update、delete、truncat 表,为加where条件或错误条件,导致数据清除或被破坏,数据库几十GB恢复需就需要几十分钟,1TB需要20小时左右,需表级的恢复加快数据库的恢复速度。

        在生产或开发环境中,往往恢复时只需恢复1个或几个表,需要快速恢复恢复使用。

方案1:恢复到其他实例

        数据量小的库用备份还原一个新实例库【完整恢复、时间点恢复】,把新库中的表数据同步,需考虑触发器、外键等因素(是否关闭)。

方案2:使用STOPAT来还原日志

恢复回滚到指定的时间点,

使用STOPAT子句,前提【完整、大容量日志恢复模式】

RESTORE DATABASE 需恢复数据库  
 FROM 数据库备份  
 WITH FILE=3, NORECOVERY ;  
  
RESTORE LOG 需恢复数据库  
 FROM 数据库备份  
 WITH FILE=4, NORECOVERY, STOPAT = 'Oct 22, 2012 02:00 AM' ;  
  
RESTORE DATABASE 需恢复的数据库 WITH RECOVERY ;  

注:缺点会覆盖从stopat指定时间点之后修改的所有数据,生产中有数据写入不合适。

方案3:数据快照


        创建数据库快照,当发生意外时,可以从快照中直接获取原来的数据。但是 必须是在发生意外之前创建的快照。这在核心表不经常更新,特别是有规律更新时很有用。但是当表经常、不定期被更新,或者很多用户在访问时,这种方法就不可取了。当需要使用这种方法时,记得在每次更新前先创建快照。

方案4:使用视图

方案4:创建同义词【Synonym】

        把表移到另外一个数据库,然后对源数据库的这个表创建一个同义词:

USE 需要恢复库 ;
GO
CREATE SYNONYM TEST_TABLE
FOR 新数据库.架构名.TEST_TABLE ;
GO

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值