SQLSERVER 数据恢复.docx
《SQLSERVER 数据恢复.docx》由会员分享,可在线阅读,更多相关《SQLSERVER 数据恢复.docx(16页珍藏版)》请在冰点文库上搜索。
![SQLSERVER 数据恢复.docx](https://file1.bingdoc.com/fileroot1/2023-7/4/dabe50d5-6f27-424d-91b4-6030f452fd55/dabe50d5-6f27-424d-91b4-6030f452fd551.gif)
SQLSERVER数据恢复
数据库误操作数据恢复
还原出现问题,处于正在还原状态的取消命令在master数据库下执行
RESTOREDATABASE数据库名WITHRECOVERY
数据恢复备份有两种方法。
第一种从备份中恢复数据
1.总体操作步骤:
1.先停止服务以免新的数据进来。
造成恢复到以前的时间点后,新的数据无法恢复。
2.必须在出现问题之前做过完整备份。
3.在完整备份基础上做一次尾部日志备份。
4.还原事务日志,选择最后一次完整备份的数据库及尾部日志进行还原。
先还原的是数据库,再还原尾部日志,还原尾部日志时要选择还原到的时间点,最好精确到秒。
等待还原完成。
2.注意事项:
1.在做尾部日志恢复之前,曾经做过最少一次的完整备份。
因为所有类型的备份都基于完整备份,如果没有最少一次完整备份,其他类型的备份都是多余的,所以在这里强调一下,在创建完一个新数据库之后,强烈建议甚至强制做一次完整备份。
2.在出现操作失误之后不要做数据库的完整备份
------SQL------
1.查看那些数据库做过备份
SELECT database_name,recovery_model,name FROM msdb.dbo.backupset
2.还原出现问题,处于正在还原状态的取消命令在master数据库下执行
RESTOREDATABASE数据库名WITHRECOVERY
3.具体操作方法
1)备份物理源文件
在出现操作失误之后不要做数据库的完整备份,先做MDF和LDF物理源文件备份。
将数据库文件复制一份保存。
2)备份日志尾部
选择要备份日志的数据库,右键选择任务-》备份。
在常规中备份类型选择【事物日志】
选择介质选项。
在可靠性中勾选【完成后验证备份】和【写入介质前检查校验】,在事务日志中勾选【备份日志尾部,并使数据库处于还原状态】
选择备份选项,在压缩选项中选压缩备份,确定备份
此时数据库会处于【正在还原状态】
如果发现备份不了可以用下面语句查看,并把spid杀掉后继续备份
---查询数据库ID
select*fromsys.databases
---查询数据库的连接
SELECT*FROMsys.sysprocessesWHEREdbid=数据库ID
---删除数据库连接
Kill(spid号)如:
kill33
3)还原完整备份
选择还原【文件和文件组】,在【常规】中选择完整备份的数据库,先要还原完整备份,选择最近的那次,由于日志备份的特性,只认最后一次备份,所以要选择最新的那次,否则还原不了。
在【选项】中选择恢复状态为【不对数据库扫行任何操作,不加回滚提交的事物,可以还原其他事物日志(A)】确定还原并成功。
4)还原日志文件
接着还原日志文件,这是最最重要的一步:
选择【任务】->还原】->【事务日志】
事物日志中选择完整备份时间后的所有事物日志。
在【时间点上】选择择需要还原的时间点
【选项】内选择【回滚未提交的事物。
。
。
】
还原完成
第二种从日志执行undo脚本恢复
1.安装软件并打开(图略)
安装软件ApexSQLLog
2.连接数据库
必须做过日志备份才会连接成功。
没有日志就是提示unknowrecoverymodel
3.选择日志备份文件
如果日志文件被移动需要手动添加日志文件,在未移动情况下,系统会自动搜索以前的所有数据库备份和备份日志文件。
选择误操作时间所在的数据库备份和日志文件,点【next】
4.设置查询日志的条件
选择第一个openresultsingrid设置查询日志的条件,设置好条件后点【FINISH】
1)timerange设置时间越精确越好。
2)Operations点开精确选择误操作命令。
3)Tables选择误操作的表。
4)fieldvalues设置误操作字段对应的值
5.读取并打开日志文件
等待打开日志,时间比较久,耐心等待。
6.选择误操作记录
打开日志文件之后可以看到操作记录,选中操作记录。
在下面的信息框中可以看到oldvalue和newvalue两列,后者就是误操作之后的值,需要还原到oldvalue的值。
7.导出undosql脚本
选中操作记录之后,在界面的操作栏有undo选项,点击undo导出一个undosql脚本,
8.执行undosql脚本
下面是undosql的脚本信息,将脚本复制到数据库操作软件,或者直接用数据库操作软件(SSMS)打开,选择要恢复的数据库,然后点击执行。
执行完undosql脚本之后,查询验证是否还原数据。
数据还原完成之后,开启相应的web服务。