sqlserver 2005 数据误删恢复

时间:2023-03-09 22:42:26
sqlserver 2005 数据误删恢复

今天同事不小心将一个很重要的数据表中的数据删除了,找了很多人都没办法恢复。我在网上搜索了一下资料,发现有一个方法可以一试,具体如下

http://www.knowsky.com/616730.html  非常感谢这位仁兄,用这个方法果然恢复成功

SQL Server数据恢复——日志备份

SQL Server数据恢复——日志备份

太坑了,我把数据给删了

“大坑啊,数据被我误删了。”从事数据库相关工作的过程中,我想应该很多人会有过和我一样的遭遇吧?尤其是在进行update或者delete操作的时候,忘记了where条件。这些毁灭性的操作,足以使你不能淡定。然后就开始到baidu、****、csblogs等等找恢复方案。网上呢,也是众说纷纭,一时间,你又崩溃了。这个时候要学会淡定,否则,会让你心碎的。

幸好,还可以数据恢复

出现这类问题之后,我们的目的就是想找回误操作之前的数据,在SSMS2008之前,有个很出名的工具LogExploer,但是好像是收费的(反正,我是对收费的工具,都是避而远之)。除了这之外,我们还可以使用日志备份的功能,来完成数据恢复。

下面我们来讲解用日志备份的方法来恢复数据(有图有真相哦)。

准备工作:

1.运行下面的代码,创建RecoverDemo数据库,和TestTable表。

 1 USE [RecoverDemo] 2 GO 3 /****** Object:  Table [dbo].[TestTable]    Script Date: 10/22/2014 17:00:36 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 SET ANSI_PADDING ON 9 GO10 CREATE TABLE [dbo].[TestTable](11     [A] [varchar](50) NULL12 ) ON [PRIMARY]13 GO14 SET ANSI_PADDING OFF15 GO16 INSERT [dbo].[TestTable] ([A]) VALUES (N'a1')17 INSERT [dbo].[TestTable] ([A]) VALUES (N'a2')18 INSERT [dbo].[TestTable] ([A]) VALUES (N'a3')19 INSERT [dbo].[TestTable] ([A]) VALUES (N'a4')20 INSERT [dbo].[TestTable] ([A]) VALUES (N'a5')21 INSERT [dbo].[TestTable] ([A]) VALUES (N'a6')22 INSERT [dbo].[TestTable] ([A]) VALUES (N'a7')23 INSERT [dbo].[TestTable] ([A]) VALUES (N'a8')24 INSERT [dbo].[TestTable] ([A]) VALUES (N'a9')25 INSERT [dbo].[TestTable] ([A]) VALUES (N'a10')

2.然后做一次完整备份,至于步骤就没必要说了吧。(恢复数据的前提是,该数据库至少做过一次完整备份)

提示:因为所有类型的备份都是基于完整备份的,如果没有至少一次的完整备份,其他的备份都是多余的,所以一定要在建完数据库后做一次完整备份。

3.确认数据库的恢复模式为完整。sqlserver 2005 数据误删恢复

sqlserver 2005 数据误删恢复

提示:在生产环境中,都强烈建议使用【完整恢复模式】,即使说相对于其他两中恢复模式,完整恢复模式产生的日志会很大,但是在出现问题的时候,这都不算什么了。

4.执行下面脚本,向TestTable中添加数据。

 1 INSERT [dbo].[TestTable] ([A]) VALUES (N'a11') 2 INSERT [dbo].[TestTable] ([A]) VALUES (N'a12') 3 INSERT [dbo].[TestTable] ([A]) VALUES (N'a13') 4 INSERT [dbo].[TestTable] ([A]) VALUES (N'a14') 5 INSERT [dbo].[TestTable] ([A]) VALUES (N'a15') 6 INSERT [dbo].[TestTable] ([A]) VALUES (N'a16') 7 INSERT [dbo].[TestTable] ([A]) VALUES (N'a17') 8 INSERT [dbo].[TestTable] ([A]) VALUES (N'a18') 9 INSERT [dbo].[TestTable] ([A]) VALUES (N'a19')10 INSERT [dbo].[TestTable] ([A]) VALUES (N'a20')

检查结果:select * from TestTablesqlserver 2005 数据误删恢复

灾难发生了

1.我们误操作删除(delete from TestTable)了TestTable中的数据。

这个时候,你就该不淡定了。

别急!我们来恢复数据

之前的那些都算是抛砖引玉吧,接下来才是我们重点想讲述的。

1.做日志备份,记住一定要选择【备份日志尾部】。

sqlserver 2005 数据误删恢复

然后在【选项】中,严格按照红色框中的选择项进行勾选,否则,你可能会哭的。并且保证数据库不要有连接,因为有链接,日志备份是备份不了的。

sqlserver 2005 数据误删恢复

2.日志备份后数据库会处于【正在还原状态...】

sqlserver 2005 数据误删恢复

日志备份后就可以进行数据还原了

3.先要还原完整备份,注意一定要选择最后那一次的完整备份,否则是还原不了的。

sqlserver 2005 数据误删恢复

sqlserver 2005 数据误删恢复

4.最后一步就是还原日志备份了,选择恢复的时间点不必太在意,只要填写你误操作之前的时间点,就可以了。

sqlserver 2005 数据误删恢复

sqlserver 2005 数据误删恢复

sqlserver 2005 数据误删恢复

哈哈,数据还原成功了。

sqlserver 2005 数据误删恢复

后事之师

1.在进行危险操作的的时候一定要,谨慎谨慎,以免造成不必要的麻烦。

2.一定要养成备份的习惯,千万不要因为嫌弃日志文件过于庞大,就将恢复模式设为【简单】,甚至是删除日志文件,到那个时候神仙恐怕也就不了你了。