1、SQLSERVER 数据恢复数据库误操作数据恢复还原出现问题,处于正在还原状态的取消命令 在master数据库下执行RESTORE DATABASE 数据库名 WITH RECOVERY数据恢复备份有两种方法。第一种 从备份中恢复数据1. 总体操作步骤:1.先停止服务以免新的数据进来。造成恢复到以前的时间点后,新的数据无法恢复。2. 必须在出现问题之前做过完整备份。3. 在完整备份基础上做一次尾部日志备份。4. 还原事务日志,选择最后一次完整备份的数据库及尾部日志进行还原。先还原的是数据库,再还原尾部日志,还原尾部日志时要选择还原到的时间点,最好精确到秒。等待还原完成。2. 注意事项:1. 在
2、做尾部日志恢复之前,曾经做过最少一次的完整备份。因为所有类型的备份都基于完整备份,如果没有最少一次完整备份,其他类型的备份都是多余的,所以在这里强调一下,在创建完一个新数据库之后,强烈建议甚至强制做一次完整备份。2. 在出现操作失误之后不要做数据库的完整备份-SQL-1. 查看那些数据库做过备份SELECTdatabase_name,recovery_model,nameFROMmsdb.dbo.backupset2. 还原出现问题,处于正在还原状态的取消命令 在master数据库下执行RESTORE DATABASE 数据库名 WITH RECOVERY3. 具体操作方法1) 备份物理源文件
3、在出现操作失误之后不要做数据库的完整备份,先做MDF和LDF物理源文件备份。将数据库文件复制一份保存。2) 备份日志尾部选择要备份日志的数据库,右键选择任务-备份。 在常规中备份类型选择【事物日志】选择介质选项。在可靠性中勾选【完成后验证备份】和【写入介质前检查校验】,在事务日志中勾选【备份日志尾部,并使数据库处于还原状态】选择备份选项,在压缩选项中选压缩备份,确定备份此时数据库会处于【正在还原状态】如果发现备份不了可以用下面语句查看,并把spid杀掉后继续备份-查询数据库IDselect * from sys.databases-查询数据库的连接SELECT * FROM sys.syspr
4、ocesses WHERE dbid=数据库ID-删除数据库连接Kill (spid号) 如: kill 333) 还原完整备份选择还原【文件和文件组】,在【常规】中选择完整备份的数据库,先要还原完整备份,选择最近的那次,由于日志备份的特性,只认最后一次备份,所以要选择最新的那次,否则还原不了。在【选项】中选择恢复状态为 【不对数据库扫行任何操作,不加回滚提交的事物,可以还原其他事物日志(A)】 确定还原并成功。4) 还原日志文件接着还原日志文件,这是最最重要的一步:选择【任务】-还原】-【事务日志】事物日志中选择完整备份时间后的所有事物日志。 在【时间点上】选择择需要还原的时间点【选项】内选
5、择【回滚未提交的事物。】还原完成第二种 从日志执行undo脚本恢复1. 安装软件并打开 (图略)安装软件 ApexSQLLog2. 连接数据库必须做过日志备份才会连接成功。没有日志就是提示unknow recovery model 3. 选择日志备份文件如果日志文件被移动需要手动添加日志文件,在未移动情况下,系统会自动搜索以前的所有数据库备份和备份日志文件。选择误操作时间所在的数据库备份和日志文件,点【next】4. 设置查询日志的条件选择第一个 open results in grid 设置查询日志的条件,设置好条件后点【FINISH】1) time range 设置时间越精确越好。2) O
6、perations点开 精确选择误操作命令。3) Tables选择误操作的表。4) field values设置误操作字段对应的值5. 读取并打开日志文件等待打开日志,时间比较久,耐心等待。6. 选择误操作记录打开日志文件之后可以看到操作记录,选中操作记录。在下面的信息框中可以看到old value 和new value 两列,后者就是误操作之后的值,需要还原到old value 的值。7. 导出undo sql脚本选中操作记录之后,在界面的操作栏有undo选项,点击undo 导出一个undosql 脚本,8. 执行undosql脚本下面是undosql的脚本信息,将脚本复制到数据库操作软件,或者直接用数据库操作软件(SSMS)打开,选择要恢复的数据库,然后点击执行。执行完undosql脚本之后,查询验证是否还原数据。数据还原完成之后,开启相应的web服务。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2