Sql server 回滚事务

Sql server 回滚事务,sql-server,Sql Server,我正在使用事务更新表中的一些数据。事务日志可在数据库的ldf文件中找到。现在,一个用户错误地提交了一个删除记录的事务,它被提交,数据被删除。那么,是否有任何方法可以回滚该特定事务。请建议。我非常感谢你的帮助 谢谢,您无法回滚已提交的事务 在事务提交之前,您将拥有数据库的“”。从事件发生前的最后一次完全备份开始,然后应用事件发生前的最新差异,然后将所有日志添加到关注点,并在事件发生时停止,此时不应用任何进一步的日志来恢复数据库。更多详情请参见链接。如果在该时间点之后还有其他事务需要恢复,则可以在发

我正在使用事务更新表中的一些数据。事务日志可在数据库的ldf文件中找到。现在,一个用户错误地提交了一个删除记录的事务,它被提交,数据被删除。那么,是否有任何方法可以回滚该特定事务。请建议。我非常感谢你的帮助


谢谢,

您无法回滚已提交的事务


在事务提交之前,您将拥有数据库的“”。从事件发生前的最后一次完全备份开始,然后应用事件发生前的最新差异,然后将所有日志添加到关注点,并在事件发生时停止,此时不应用任何进一步的日志来恢复数据库。更多详情请参见链接。如果在该时间点之后还有其他事务需要恢复,则可以在发生错误时恢复数据库的副本,然后手动将已删除的数据从副本数据库复制到真实数据库中

此外,对于前面的解决方案(即上文),您可以在日志还原命令中使用“WITH STANDBY='filename'”选项。这将允许您在两次恢复之间读取数据库,从而使恢复数据更加容易


如果是SQL 2000,并且您有完整备份和事务日志备份文件,那么可以使用一个工具来提取撤消脚本。它仍然依赖于具有可恢复的备份和事务日志文件,但允许您过滤事务日志并将SQL提取到脚本中。我手头没有一份副本,但它是一份免费的,可以从一家主要的SQL工具供应商(如Quest、Red Gate、Idera)那里获得。

使用内置的SQL Server函数和命令(如fn_dblog和DBCC LOGINFO)读取事务日志可能很困难,因为所有数据都是以十六进制格式存储的。为了获得可读数据,需要手动查询和转换。这些是未记录的函数,不能给出现成的结果。从理论上讲,您可以追踪已删除的记录并查看已删除的内容

请注意,在恢复数据时也非常重要,应使用完整或大容量日志模式

关于时间点恢复,您可以看看哪个描述了使用SQLServerManagementStudio和第三方工具调用的过程。还有其他第三方工具,如RedGate的SQL Rescue。请注意,您必须提供完整的事务日志备份链:存在完整数据库备份后的事务日志备份链,或完整数据库备份,然后是差异数据库备份,然后是事务日志备份链,从该备份链一直到您要恢复数据的时间点


免责声明:我作为支持工程师为ApexSQL工作

,不要忘记删除后的工作可能会因为这种方法而丢失。如果数据库在事件发生后被大量使用,这将变得相当棘手