先利用Log Explorer 恢复数据.然后备份数据,然后数据再还原到指定的时间点.
/*
标题:Log Explorer for SQL Server v4.0.2的下载地址和使用说明 作者:爱新觉罗·毓华 时间:2008-07-14 地点:新疆乌鲁木齐 资料来源:
*/
1
、Lumigent
Log
Explorer
for
SQL Server v4.
0.2
特别版下载地址 http:
//
down.chinaz.com
/
soft
/
7887
.htm
Log
Explorer
for
SQL Server
4.2
注册码 wv5rc
-
uxvpz
-
e33
-
nr4694qs2
2
、
Log
Explorer
for
SQL Server v4.
0.2
安装完毕后,注册该程序(压缩文件有注册机) 打开log explorer
file
=>
attach
log
file
->
选择服务器和登陆方式
->
connect
->
选择数据库
->
attach
->
左面对话框中browse
->
view
log
->
就可以看到log记录了 点击“
View
DDL Commands”里面就有很多drop
table
命令 点击下面的“undo”按钮是生成表结构的语句(
create
table
....) 点击下面的“Salvage”按钮是生成插入语句的(
insert
into
...
values
....) 想恢复的话: 右键log记录 undo transation
->
选择保存文件名和路径
->
然后打开该文件到查询分析器里执行T
-
sql代码就可以了 例如 如果log是delete
table
where
...的话,生成的文件代码就是insert
table
....
log
explorer使用的几个问题
1
)、对数据库做了完全、差异和日志备份 备份时选用了删除事务日志中不活动的条目 再用Log explorer打试图看日志时 提示No
log
recorders found that match the filter,would you
like
to
view
unfiltered data 选择yes,就看不到刚才的记录了 如果不选用了删除事务日志中不活动的条目 再用Log explorer打试图看日志时,就能看到原来的日志
2
)、修改了其中一个表中的部分数据,此时用Log explorer看日志,可以作日志恢复
3
)、然后恢复备份,(注意:恢复是断开log explorer与数据库的连接,或连接到其他数据上, 否则会出现数据库正在使用无法恢复) 恢复完后,再打开log explorer 提示No
log
recorders found that match the filter,would you
like
to
view
unfiltered data 选择yes,就看不到刚才在2中修改的日志记录,所以无法做恢复.
4
)、不要用SQL的备份功能备份,搞不好你的日志就破坏了. 正确的备份方法是: 停止SQL服务,复制数据文件及日志文件进行文件备份. 然后启动SQL服务,用log explorer恢复数据
5
)、如果你的数据库的日志恢复模型是simple,那就不可能用log explorer恢复
6
)、
Log
explorer必须安装在要恢复数据库的sql server服务器上,或者在sql server服务器上安装服务端,在操作的电脑上安装客户端进行数据恢复
3
、如果数据量比较大的话,使用磁带机和集群的话,安装了正版的VERITAS ,恢复数据是比较好的方法。 下面是该软件重要的新功能:
1
)、灾难恢复演习(Disaster Recovery Fire Drill)
--
能够自由测试、规划和检验灾难恢复计划,而不会中断生产过程。
2
)、集群模拟器(Cluster Simulator)
--
可测试应用故障切换方案,以验证应用的可用性,确认应用是否根据计划的故障切换策略和应用需求,迁移到最适当的服务器。
3
)、全局集群选件(Global Cluster
Option
)
--
当可用性要求从本地迁移到广域灾难恢复时,能够快速、轻松地升级到任何体系结构。
4
)、即时访问复制数据
--
在复制数据的同时,能够即时访问数据,只占用客户的部分可用存储容量。
5
)、卷复制顾问工具(Volume Replicator Advisor)
--
准确地分析带宽需求,确保应用得到优化。
4
、几点恢复数据心得:
1
)、平时需要做好双机热备份,日备份,月备份,年备份,数据复制,异常记录等工作,在数据丢失的情况下才能做到心中不急。
2
)、如果硬盘损害错误,或者误删除数据库的时候,可以考虑用Easyrecovery或者Recover4all等软件恢复删除或者受到损害的文件,再恢复数据。
3
)、如果实在遇到自然因素,网络又断开了复制操作的情况下,建议只有手工"造取"一批数据出来弥补丢失数据,一般选取类似纬度(如时间、区域等)的数据。
--
数据还原到指定时间点的处理示例
--
创建测试数据库
CREATE
DATABASE
Db
GO
--
对数据库进行备份
BACKUP
DATABASE
Db
TO
DISK
=
'
c:/db.bak
'
WITH
FORMAT
GO
--
创建测试表
CREATE
TABLE
Db.dbo.TB_test(ID
int
)
--
延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)
WAITFOR
DELAY
'
00:00:01
'
GO
--
假设我们现在误操作删除了 Db.dbo.TB_test 这个表
DROP
TABLE
Db.dbo.TB_test
--
保存删除表的时间
SELECT
dt
=
GETDATE
()
INTO
#
GO
--
在删除操作后,发现不应该删除表 Db.dbo.TB_test
--
下面演示了如何恢复这个误删除的表 Db.dbo.TB_test
--
首先,备份事务日志(使用事务日志才能还原到指定的时间点)
BACKUP
LOG
Db
TO
DISK
=
'
c:/db_log.bak
'
WITH
FORMAT
GO
--
接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)
RESTORE
DATABASE
Db
FROM
DISK
=
'
c:/db.bak
'
WITH
REPLACE
,NORECOVERY
GO
--
将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早
DECLARE
@dt
datetime
SELECT
@dt
=
DATEADD
(ms,
-
20
,dt)
FROM
#
--
获取比表被删除的时间略早的时间
RESTORE
LOG
Db
FROM
DISK
=
'
c:/db_log.bak
'
WITH
RECOVERY,STOPAT
=
@dt
GO
--
查询一下,看表是否恢复
SELECT
*
FROM
Db.dbo.TB_test
/*
--结果: ID ----------- (所影响的行数为 0 行) --
*/
--
测试成功
GO
--
最后删除我们做的测试环境
DROP
DATABASE
Db
DROP
TABLE
#
mysql库表恢复到某一时间点之前 sql数据库恢复到某个时间
转载文章标签 mysql库表恢复到某一时间点之前 sql sql server 数据库 database 文章分类 MySQL 数据库
-
Odoo中防止用户同一时间多次点击同一按钮触发函数
odoo防止用户重复快速点击按钮
ide xml javascript odoo -
mysql恢复指定表数据到某一时间 mysqlbinlog 恢复指定表
binlog恢复数据的几种情况 1.数据库丢失或者drop 1)恢复系统自动备份 2)用binlog恢复系统备份时间到此刻的的数据(drop操作需要binlog删除drop记录) 2.误操作update,delete 1)恢复系统自动备份 2)在binlog日志中删除误操作的操作语句,执行binlog恢复其他的数据 或者 在
mysql恢复指定表数据到某一时间 MySQL主从同步 mysql数据找回 MySQL通过binlog恢复数据 mysql通过binlog回滚sql