没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
SQLServer恢复表级数据详解恢复表级数据详解
主要介绍了SQLServer中用于快速恢复表,而不是库,但是切记,防范总比亡羊补牢好,需要的朋友可以参考下
最近几天,公司的技术维护人员频繁让我恢复数据库,因为他们总是少了where条件,导致update、delete出现了无法恢复的后果,加上那些库
都是几十G。恢复起来少说也要十几分钟。为此,找了一些资料和工作总结,给出一下几个方法,用于快速恢复表,而不是库,但是切记,防范
总比亡羊补牢好。
在生产环境或者开发环境,往往都有某些非常重要的表。这些表存放了核心数据。当这些表出现数据损坏时,需要尽快还原。但是,正式环境的
数据库往往都是非 常大的,统计数据表明,1T的数据库还原时间接近24小时,所以因为一个表而还原一个库,不单空间,甚至时间上都是一个
很大的挑战。本文介绍如何恢复单 表,而不需要恢复整个库。
现在假设一个表:TEST_TABLE。我们需要尽快恢复这个表,并且把恢复过程中对其他表和用户的影响降到最低。
SQLServer(特别是2008以后),具有很多备份及恢复功能:完整、部分、文件、差异和事务备份。而恢复模式的选择严重影响备份策略和备份
类型。
下面是几个可供参考的方案,但是记住,各有好坏,应该按照实际需要选择:
方案方案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:使用视图::使用视图:
你可以创建一个新的数据库,并把TEST_TABLE移动到这个库里面。当你需要恢复的时候,你只需要恢复这个非常小的数据库即可。访问源数据
库的数据时,最简单的方法就是创建一个视图,选择TEST_TABLE表中所有列的所有数据。但是注意这个方法需要在创建视图前,重命名或者删
除源数据库的表:
USE 需要恢复的数据库 ;
GO
CREATE VIEW TEST_TABLE
AS
SELECT *
FROM 备份数据库.架构名.TEST_TABLE ;
GO
使用这种方法,可以对视图使用SELECT /INSERT/UPDATE/DELETE语句,就像直接操作实体表似得。当TEST_TABLE更改时,要使用
SP_REFRESHVIEW存储过程来更新元数据。
方案方案5:创建同义词(:创建同义词(Synonym):):
和方案4类似,把表移到另外一个数据库,然后对源数据库的这个表创建一个同义词:
USE 需要恢复的数据库 ;
GO
CREATE SYNONYM TEST_TABLE
FOR 新数据库.架构名.TEST_TABLE ;
GO
方案方案6:使用:使用BCP保存数据:保存数据:
你可以创建一个作业,使用BCP定期导出数据。但是这种方法的缺点和方案1类似,需要找到哪天的文件并导进去,同时要考虑触发器和外键问
题。
各种方法的对比:这个方法的有点就是你不需要担心元数据更新所带来的结构变更不及时。但是这个方法的问题就是不能在DDL语句中引用同义
词,或者不能在链接服务器中找到。
资源评论
weixin_38686658
- 粉丝: 4
- 资源: 915
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功