数据库误删怎么恢复

数据库误删怎么恢复,第1张

可以先看下是否有备份,如果能找到备份那最好,直接从备份里还原一下就可以了。如果没有备份,那就只能通过数据恢复的方式尝试恢复了。不过数据恢复,只能找回未被覆盖的数据。自己可以用个软件扫描试试,看是否可以搜索到需要的文件。

将原来的数据库文件删除,将备份中的数据库文件拷到相对路径下

使用with

move选项

RESTORE

DATABASE

A

FROM

DISK

=

N'D:\B'

with

RECOVERY,

NOUNLOAD,

REPLACE,

STATS

=

10

,

MOVE

'数据库逻辑名'

TO

'数据库A的完整路径+数据文件名mdf',

MOVE

'日志逻辑名'

TO

'数据库A的完整路径+日志文件名ldf'

另外使用restore命令恢复数据库,一般不必先创建要恢复的数据库,可以直接从备份里恢复出来。

或者右键

Attach你的备份也可以。

检查一下你的数据库连接字符串,如果你恢复了你的数据库并且数据库正常的话,那就是你程序配置的问题了

从日志回复数据库

:自己一步一步按照说明试着看

--创建测试数据库

create

database

db

go

--对数据库进行备份

backup

database

db

to

disk='c:\dbbak'

with

format

go

--创建测试表

create

table

dbdbotb_test(id

int)

--延时1秒钟,再进行后面的 *** 作(这是由于sql

server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的 *** 作失败)

waitfor

delay

'00:00:01'

go

--假设我们现在误 *** 作删除了

dbdbotb_test

这个表

drop

table

dbdbotb_test

--保存删除表的时间

select

dt=getdate()

into

#

go

--在删除 *** 作后,发现不应该删除表

dbdbotb_test

--下面演示了如何恢复这个误删除的表

dbdbotb_test

--首先,备份事务日志(使用事务日志才能还原到指定的时间点)

backup

log

db

to

disk='c:\db_logbak'

with

format

go

--接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)

restore

database

db

from

disk='c:\dbbak'

with

replace,norecovery

go

--将事务日志还原到删除 *** 作前(这里的时间对应上面的删除时间,并比删除时间略早

declare

@dt

datetime

select

@dt=dateadd(ms,-20,dt)

from

#

--获取比表被删除的时间略早的时间

restore

log

db

from

disk='c:\db_logbak'

with

recovery,stopat=@dt

go

--查询一下,看表是否恢复

select

from

dbdbotb_test

/--结果:

id

-----------

(所影响的行数为

0

行)

--/

--测试成功

go

--最后删除我们做的测试环境

drop

database

db

drop

table

#

恢复sqlserver数据库表数据步骤如下:

一、心态:

1、务必冷静,事情已经发生不可慌乱。

2、立即查看当前时间,最好能够精确到秒,并做记录。

3、应立即向直接上级反映此事,不可隐瞒,防止事态扩大。

4、如果权限允许,应当立即停止相关应用,防止有新的数据写入数据库。

二、恢复:

1、构建新数据库以及写入一些数据

2、做一次完整备份,这个是前提,没有一份完整备份文件是无法进行接下来的 *** 作的。

注意:如上图所示,恢复模式一定要说完整,如果是其他类型那恐怕就没有下文了。一般来讲新建数据库的时候,默认不要去改恢复模式这个属性。

3、写入一条新数据。

4、记住此时要记录时间点。

此刻最好看一下系统时间。接下来就要演示如何进行数据恢复。

5、做事务日志备份,做事务日志备份需要注意一下一点,如图所示。

备份模式请选择事务日志,备份路径自行决定

进入选项,将可靠性第1、2勾选,事务日志选择第二个,压缩属性可以不选择点击确定备份成功,此时数据库将显示为正在还原状态

注意:如果备份失败,请检查该数据库是否正在被占用,如果是请kill。

6、还原完整备份。

数据库处于正在还原状态,右键数据库--任务--还原--文件和文件组,选择最近的一次完整备份。此时,需要在“选项”中选择第二种还原方式,具体如下图。

如上图,勾选完整数据备份文件。

如上图,恢复状态选择第二种,从字面意思就知道为什么要选择这种。

7、接着还原备份的事务日志。

完整备份还原完毕,接着要对事务日志进行还原,右键数据库--任务--还原--事务日志,如下图:

还原事务日志的时候需要特别注意“时间点”这个设置,其他不需要设置。

时间点选择为误删数据的时间点之前就可以恢复出误删的数据,所以之前强调要查看一下时间。如下图所示

点击确定,在确定等待还原成功,数据库变成可用状态。如下图。

如果查询发现数据不是你想要的,那么可以重复上述的 *** 作,从备份事务日志开始,然后最后选择时间点的时候在缩小范围。

你好:

一、还原需要的条件设置

使用命令,是通过sqlserver的事务日志以及一个误删除前的数据库的完整备份进行还原,所以在sqlserver2012的维护计划向导中,要建立完整备份,差异备份和事务日志,具体如下

以及在数据库属性,选项设置中,设置为完整备份,具体如下图

做好如上两个设置,数据库误删后找回数据就会非常轻松,现在说一下如何还原sqlserver数据到故障点。

二、还原命令

还原主要分为四步走:

1、出现故障后,首先执行备份事务日志命令,这里以AdventureWorks作为数据库名。命令如下:

BACKUP LOG AdventureWorks TO DISK = 'C:\SQLServerBackups\AdventureWorks_transcationlogbak'

WITH NORECOVERY;

2、从完整备份还原数据

RESTORE  DATABASE [QASupervision] FROM DISK='M:\Database\OA\AdventureWorks_Fullbackup_2014_03_18_010002_0155764bak'

WITH  NORECOVERY, REPLACE

3、从差异备份还原数据

RESTORE DATABASE [QASupervision] FROM DISK='M:\Database\OA\AdventureWorks_diffbackup_2014_03_18_020002_0155764bak' WITH NORECOVERY, REPLACE

4、从事务日志还原数据,还原到某个时间点之前

DECLARE @dt datetime

SELECT @dt=DATEADD(HOUR,-16,GETDATE())

select @dt

RESTORE LOG [QASupervision] FROM DISK='C:\SQLServerBackups\AdventureWorks_transcationlogbak'  WITH  STOPAT=@dt,RECOVERY

5、还原数据库,如果数据库提示正在还原中,则执行此命令即可。

RESTORE DATABASE AdventureWorks WITH RECOVERY

以上就是关于数据库误删怎么恢复全部的内容,包括:数据库误删怎么恢复、救命啊!SQL的数据库被误覆盖了 如何恢复、如何从数据库的完整日志模式还原误删除的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9759494.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存