使用事务日志回滚事务
Posted
技术标签:
【中文标题】使用事务日志回滚事务【英文标题】:Rollback transaction using transaction log 【发布时间】:2010-11-07 02:56:56 【问题描述】:是否可以使用 Transactionlog 文件为特定记录回滚事务?
我正在使用SQL Server 2005。
【问题讨论】:
【参考方案1】:本机,没有。不过,我相信有一些昂贵的第三方工具可以做到这一点。
或者,您可以从备份中恢复您的数据库,然后使用STOPAT = '6/30/2009 2:30PM'
参数将RESTORE LOGS
恢复到某个时间点。
有Apex 和SQL Log Rescue 可用。但是,如果您的日志未处于 FULL
恢复模式,那么如果您无法恢复,您可能会陷入困境。
【讨论】:
你能给我这些工具的样本吗? 推荐的方法是使用 STOPAT 恢复数据库的副本,然后将数据从副本复制到真实数据库中。 如何知道您的日志处于何种恢复模式?【参考方案2】:据我所知,您的选择是 ApexSQL Log(价格昂贵,但有免费试用版)或未记录的 SQL Server 命令,例如 DBCC Log 和 fn_dblog。
只有当您的数据库处于完全恢复模式时,其中的任何一个才会起作用,在这种情况下,SQL Server 会在事务日志中存储更多详细信息。
另外,我认为这不适用于任何类型的交易。我见过有人使用这种技术来恢复插入、更新、删除,但我很确定它是否可以用来恢复说 ALTER TABLE 或类似的东西。
【讨论】:
免费试用只会为每 10 条记录生成撤消脚本。【参考方案3】:就第三方软件而言,您可以免费使用戴尔的Toad 软件三十天,并且它具有带有撤消脚本生成功能的事务日志。
【讨论】:
【参考方案4】:查看RedGate's LogRescue 产品。如果没有第 3 方产品,您可能只能在时间点恢复到单独的数据库,然后手动将记录复制回您的生产数据库。
【讨论】:
根据其网页,LogRescue 仅限于 SQL Server 2000以上是关于使用事务日志回滚事务的主要内容,如果未能解决你的问题,请参考以下文章