您的位置:首页 > 数据库

通过日志恢复MS SQL数据案例

2007-09-07 08:44 267 查看
【导读】本文介绍通过日志恢复MS SQL数据案例,以数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项为前提。

前提条件是数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项。

1、创建一个数据库test 创建时间为2006-11-18 09:40

2、对数据库进行备份,备份时间为2006-11-18 09:42

语句如下:

backup database test to disk='d:"database"test.bak' with init

提示:

已处理 216 页,这些页属于数据库 'test' 的文件 'test'(位于文件 1 上)。

已处理 1 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 1 上)。

BACKUP DATABASE 操作成功地处理了 217 页,花费了 0.191 秒(9.269 MB/秒)。

3、2006-11-18 09:44 对数据库进行操作删除和新增,我这边对客户资料进行删除和新增操作

原始的记录为


修改完后的记录为


下面开始还原操作

4、备分日志:现在时间是2006-11-18 09:47

语句如下:

BACKUP LOG test TO DISK='d:"database"0611180947.logs' WITH INIT

提示:

已处理 4 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 1 上)。

BACKUP LOG 操作成功地处理了 4 页,花费了 0.104 秒(0.275 MB/秒)。

5、恢复之前数据库备份文件test.bak,使用WITH NORECOVERY参数:

RESTORE DATABASE test from disk='d:"database"test.bak' WITH NORECOVERY

提示:

已处理 216 页,这些页属于数据库 'test' 的文件 'test'(位于文件 1 上)。

已处理 1 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 1 上)。

RESTORE DATABASE 操作成功地处理了 217 页,花费了 0.352 秒(5.029 MB/秒)。

6、使用日志恢复数据库到时间为2006-11-18 09:43,即恢复09:44分的删除和新增操作

RESTORE LOG test FROM disk='d:"database"0611180947.logs' WITH RECOVERY,STOPAT='11/18/2006 09:43'

提示:

已处理 4 页,这些页属于数据库 'test' 的文件 'test_log'(位于文件 1 上)。

RESTORE LOG 操作成功地处理了 4 页,花费了 0.016 秒(1.792 MB/秒)。

至此,再进入到软件中,可以看到,数据已经还原到原来的状态了

Re

利用事务日志来恢复Update、Delete误操作引起的数据丢失方法一(只有 sysadmin 固定服务器角色的成员才能执行以下操作):

1如果误操作之前存在一个完全备份(或已有多个差异备份或增量备份),首先要做的事就是进行一次日志备份(如果为了不让日志文件变大而置trunc. log on chkpt.选项为1那就没有办法了)

backup log dbname to disk='filename'

执行后在你mssql目录的backup文件夹里就有一个文件,名叫:filename

2恢复一个完全备份,注意需要使用with norecovery,如果还有其他差异或增量备份,则逐个恢复。

restore database dbname from disk='filename' with norecovery(,move…)

当然如果在恢复之前你mssql里的data文件夹里有同名的.mdf或.ldf文件,你要先执行sp_detach_db 'dbname',然后将同名的.mdf或.ldf文件剪切出data文件夹,不然会报错;或者你在restore database时用move参数(restore filelistonly from disk=’以前文件备份的路径和名称’,得到逻辑文件名,move ‘逻辑文件名’ to ‘一个新路径’),将物理文件(.mdf或.ldf)存放到不同的文件夹。

3恢复最后一个日志备份即刚做的日志备份,指定恢复时间点到误操作之前的时刻

restore log dbname from disk='filename'

with recovery,stopat='date_time'

这里的date_time时间格式用datetime格式。

当然,如果误操作是一些不记日志的操作比如truncate table,select into等操作,那么是无法利用上述方法来恢复数据的。

方法二:

用SQL Server Log explorer这样一个软件来逆操作

确保企业资料的可用度、整合性与高安全,绝对是项艰钜的任务。要完成这项任务,您必须具备迅速解决

使用者端或应用程式问题的能力。一般企业最常见的问题不外乎资料方面发生错误,要迅速而轻松地解决这些问题,您得随时检视、分析哪些资料发生异动?异动作业又是由谁进行的。此外,您还必须清楚是谁对资料纲要(Schema)及权限(Permission)执行了异动。最後,您更可以跨越备份复原的繁琐程序,轻松完成资料复原。

要满足上述需求,惟有运用隐藏在交易记录档(Transaction Log)中的资讯,而Log Explorer的强大功能正能协助您达成这些任务。现在就让我们开始进入Log Explorer的神奇世界中。

Log Explorer 3.0 for Microsoft SQL Server强大功能包括有 :

能够辨识任何资料纲要(Schema)及权限(Permission)的所有改变

能够依据交易记录档分析您的资料库

能够透过超强的过滤器迅速发掘并解决问题

不需运用trigger即可稽核资料

能够线上即时复原资料列甚或整个表

下载地址: http://51zz.com:81/SoftView.asp?SoftID=2090 特别版
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: