sql 回滚语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 回滚语句相关的知识,希望对你有一定的参考价值。

我数据库执行update命令时忘了加where条件,结果修改了所有记录,我原意只是想修其中一条记录,那些记录有100000多条,手工改回来要人命的,有没有办法回滚到update执行之前的操作,各位救我一命!谢谢!在线等!
此语句如何使用,如:我执行的语句是:update person set per_name='何足道' ,如何利用rollback transaction回滚到update句之前的操作,给个例句好吗~~??谢谢!

这种情况的数据恢复只能利用事务日志的备份来进行,所以如果你的SQL没有进行相应的全库备份

或不能备份日志(truncate log on checkpoint选项为1),那么就无法进行数据的恢复了,或者
只能恢复到最近一次的备份的数据了。

以下简单说明恢复数据方法:
1,如果误操作之前存在一个全库备份(或已有多个差异备份或增量备份),首先要做的事就是进
进行一次日志备份(如果为了不让日志文件变大而置trunc. log on chkpt.选项为1那你就死翘了)
backup log dbName to disk='fileName'
2,恢复一个全库备份,注意需要使用with norecovery,如果还有其他差异或增量备份,则逐个恢

restore database dbName from disk='fileName' with norecovery
3,恢复最后一个日志备份即刚做的日志备份,指定恢复时间点到误操作之前的时刻
restore log dbName from disk='fileName'
with stopat='date_time'

以上这些操作都可以在SQL SERVER企业管理器里完成,难度不大。。。

当然,如果误操作是一些不记日志的操作比如truncate table,select into等操作,那么是无法利
用上述方法来恢复数据的...
参考技术A 这种情况的数据恢复只能利用事务日志的备份来进行,所以如果你的SQL没有进行相应的全库备份

或不能备份日志(truncate log on checkpoint选项为1),那么就无法进行数据的恢复了,或者
只能恢复到最近一次的备份的数据了。

以下简单说明恢复数据方法:
1,如果误操作之前存在一个全库备份(或已有多个差异备份或增量备份),首先要做的事就是进
进行一次日志备份(如果为了不让日志文件变大而置trunc. log on chkpt.选项为1那你就死翘了)
backup log dbName to disk='fileName'
2,恢复一个全库备份,注意需要使用with norecovery,如果还有其他差异或增量备份,则逐个恢

restore database dbName from disk='fileName' with norecovery
3,恢复最后一个日志备份即刚做的日志备份,指定恢复时间点到误操作之前的时刻
restore log dbName from disk='fileName'
with stopat='date_time'

以上这些操作都可以在SQL SERVER企业管理器里完成,难度不大。。。

当然,如果误操作是一些不记日志的操作比如truncate table,select into等操作,那么是无法利
用上述方法来恢复数据的...
参考技术B 你用的是什么dbms?
如果你是
begin tran
update HAHA set AGE = 34
然后再用ROLLBACK可以恢复的.但是如果你没有把更新语句写在事务里的话,就无法恢复了.
最好说明你所用的DBMS
参考技术C 你要用set
xact_abort
(transact-sql)
指定当
transact-sql
语句出现运行时错误时,sql
server
是否自动回滚到当前事务。

set
xact_abort

on
时,如果执行
transact-sql
语句产生运行时错误,则整个事务将终止并回滚。

set
xact_abort

off
时,有时只回滚产生错误的
transact-sql
语句,而事务将继续进行处理。如果错误很严重,那么即使
set
xact_abort

off,也可能回滚整个事务。off
是默认设置。
编译错误(如语法错误)不受
set
xact_abort
的影响。
参考技术D 在数据库的日志里面好像可能改回来.

MySQL误操作如何快速回滚?

安装开源工具binlog2sql。binlog2sql是一款简易的binlog解析工具,其中一个功能(flashback)就是生成回滚SQL。确认需要误操作的时间,找到binlog需要回滚的位置,使用binlog2sql的flashback功能生成回滚sql,检查回滚sql是否正确,确认后执行回滚语句,登录mysql确认,数据回滚成功。

以上是关于sql 回滚语句的主要内容,如果未能解决你的问题,请参考以下文章

如果任何语句失败,将回滚的 SQL 查询

ROLLBACK语句只能针对未提交的事务进行回滚操作,已提交的事务是不能回滚的?

sqlserver回滚到前一小时

事务 回滚

是否可以回滚主要 SQL 数据库中的 CREATE TABLE 和 ALTER TABLE 语句?

jdbc事务回滚