sql数据修改回滚

sql数据修改回滚,第1张

SQL:回滚事务日志文件中的事务

问:怎样使用Transact-SQL回滚某个位于事务日志文件中的事务(例如,ID 0000:0010a183)?

答:出于预防数据错误的考虑,SQL Server并不支持个别事务的回滚。举例来说,假设两个事务T1和T2使用现金余额域。T1添加了500美金,T2使用更新后的值进行了某个 *** 作。如果回滚T1,则T2可能是错误的。但是,您可以使用时间戳或事务日志标记将日志恢复至预定义的标记或时间点。以下两个例子说明了如何使用SQL Server 2000语法。

例1:使用时间戳将日志进行时点恢复

使用以前的完全备份恢复数据库,并使其为日志恢复做好准备。

RESTORE DATABASE pubs FROM DISK = N'C:\Backups\Fullbackupbak' WITH NORECOVERY

现在您可以将日志前滚到合适的时间点,并使数据库可供使用。请注意,STOPAT在数据库正在执行大容量日志时禁止执行。

RESTORE LOG pubs FROM DISK=N'C:\Backups\Logbackupbak' WITH RECOVERY,STOPAT='02/11/2002 17:35:00'

例2:使用数据库标记将日志恢复到预定义时间点的语句

在事务日志中置入一个标记。请注意,被标记的事务至少须提交一个更新,以标记该日志。

BEGIN TRAN MyMark WITH MARK

UPDATE pubsdboLastLogMark SET MarkTime = GETDATE()

COMMIT TRAN MyMark

按照您常用的方法备份事务日志。

BACKUP LOG pubs TO DISK='C:\Backups\Fullbackupbak' WITH INIT

现在您可以将数据库恢复至日志标记点。首先恢复数据库,并使其为接受日志恢复做好准备。

RESTORE DATABASE pubs FROM DISK=N'C:\Backups\Fullbackupbak' WITH NORECOVERY

现在将日志恢复至包含该标记的时间点,并使其可供使用。请注意,STOPAT在数据库正在执行大容量日志时禁止执行。

RESTORE LOG pubs FROM DISK=N'C:\Backups\Logbackupbak' WITH RECOVERY,

STOPAT='02/11/2002 17:35:00'

—Microsoft SQL Server 开发团队

确保在你执行过了update语句之后,如果没有执行其他语句

可以在deleted表中恢复

但是如果你执行过其他语句,可能恢复的机会不大

我对SQLServer不是很熟,你试试看有木有事务回滚之类的,回滚到update之前的状态就行

可以这样做:

alter table 表名 enable row movement;

flashback table 表名 to timestamp to_timestamp('2011-03-04 05:00:00','yyyy-mm-dd HH24:MI:SS');

以上就是需要回滚到某一日期的方法!

以上就是关于sql数据修改回滚全部的内容,包括:sql数据修改回滚、sql server 用了update语句如何恢复、如何将Oracle数据库回滚至一个日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9789754.html

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

发表评论

登录后才能评论

评论列表(0条)

保存