intohard 发表于 2014-12-24 14:19:51

SQL Server数据库误删除表中记录的数据恢复

SQL Server数据库误操作不小心delete了一下,还是update一下怎么恢复数据呢?,或者直接把数据库删除了,如何恢复误删除的数据呢?操作还是小心谨慎不出问题的好~~

1:建立测试环境创建表,插入几条数据;




CREATE DATABASE INTOHARD

CREATE TABLE I1(ID INT PRIMARY KEY)
INSERT INTO dbo.I1(ID)VALUES (0)
INSERT INTO dbo.I1(ID)VALUES (1)
INSERT INTO dbo.I1(ID)VALUES (2)
INSERT INTO dbo.I1(ID)VALUES (3)
INSERT INTO dbo.I1(ID)VALUES (5)


查询一下数据插入成功了没有;
SELECT * FROM dbo.I1


好了,我们现在有一个数据库,备份一下:



备份完成,下面再插入一条数据;
INSERT INTO dbo.I1(ID)VALUES (6)


查询一下表内数据;
SELECT * FROM dbo.I1


2:误操作把数据删除了,怎么办?

数据表内数据空空如也,问题来了,数据恢复技术哪家强....
不要着急,立即备份数据库,这里要做日志备份,然后才可以完成数据恢复;
a):备份数据库事务
backup LOG INTOHARD to disk='c:\test\I1_06.bak' with NORECOVERY;


注意还原事件,我们要选择恢复时间,也就是在你删除的前一刻,恢复完成后数据又回来了。


b):还原数据库语句:
restore log INTOHARD from disk='C:\I1_06.BAK' with stopat='2014-12-24 13:50:25'

想要通过LOG恢复误删的数据需要满足至少以下条件:

1. 至少有一个误删除之前的数据库完全备份(不分时间段)。
2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。



针对这两个前提条件总结,如果这两个前提条件都存在,通过SQL语句只需三步就能恢复。INTOHARD.COM

  a) 备份当前数据库的事务日志:BACKUP LOG INTOHARD TO disk= 'c:\test\I1_06.bak' WITH NORECOVERY

  b) 恢复一个误删除之前的完全备份:RESTORE DATABASE INTOHARD FROM DISK = 'c:\test\I1_06.bak' WITH NORECOVERY,REPLACE

  c) 将数据库恢复至误删除之前的时间点:RESTORE LOG INTOHARD FROMDISK = 'c:\test\I1_06.bak' WITH   STOPAT = N'2014-12-24 13:51:35' , RECOVERY

对于在删除恢复中可能出现的问题:

1:只恢复部份数据,例如某张表里面删除了3,4,5记录,但发现删错了,需要恢复记录4,可以通过全部恢复后删除3,5;

2:用户李误操作导致A表中删除了3、4、5记录,用户王正常在某表中也删除了数据;怎么恢复A删除的数据呢?通过运行库与还原库对比,找出删除数据回导,正常用户删除数据不管。如果是关系表,删除了一张表内数据,通过主键与外键对比得出。

3:恢复数据之前是提前备份了数据库的,在实际中不能实时的去备份数据库的,如果没有备份怎么办?直接做一个全备,然后恢复到删除数据之前的一刻。



INTOHARD.COM写在最后的话:数据库发生数据丢失或损坏,保护好现场则可能是对数据最有利的措施。

文档电子版:

未完待续:SQL Server数据库误删除表的数据恢复

鑫灿维 发表于 2014-12-24 22:23:45

真的不错呀,学习了,呵呵呵呵

fylwb 发表于 2014-12-24 22:41:20

学习了,虽然不是很懂

happy2011 发表于 2014-12-25 08:44:14

高人~神人~~~~~~~~~~~~

tish007 发表于 2014-12-28 11:22:25

2000的数据库能不能这样恢复的?

zxzzhi 发表于 2014-12-30 13:35:57


学习了,虽然不是很懂

johnson061216 发表于 2014-12-31 12:08:31

先下载了,再反复研究,感谢分享

dfkx 发表于 2015-1-1 11:44:53

这个是真正的人才,要支持下

dfkx 发表于 2015-1-1 11:45:10

能不能教下我,感谢

dfkx 发表于 2015-1-1 11:45:44

我有个数据库删除了,但是用同名的覆盖了,能修复吗
页: [1] 2 3
查看完整版本: SQL Server数据库误删除表中记录的数据恢复