
可以先看下是否有备份,如果能找到备份那最好,直接从备份里还原一下就可以了。如果没有备份,那就只能通过数据恢复的方式尝试恢复了。不过数据恢复,只能找回未被覆盖的数据。自己可以用个软件扫描试试,看是否可以搜索到需要的文件。
将原来的数据库文件删除,将备份中的数据库文件拷到相对路径下
使用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的数据库被误覆盖了 如何恢复、如何从数据库的完整日志模式还原误删除的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)