使用事务日志回滚事务

12

是否可以使用事务日志文件来回滚特定记录的事务?

我正在使用SQL Server 2005

4个回答

10

原生的方法不行,但我相信有一些昂贵的第三方工具可以实现这个功能。

另外,您可以从备份中恢复数据库,然后使用 RESTORE LOGS 命令到指定时间点,使用 STOPAT = '6/30/2009 2:30PM' 参数。

目前有 ApexSQL Log Rescue 工具可用。但如果您的日志没有处于 FULL 恢复模式,则可能无法进行恢复。


你能给我这些工具的示例吗? - THEn
2
推荐的方法是使用STOPAT还原数据库副本,然后将副本中的数据复制到真实数据库中。 - Remus Rusanu
你如何查找日志所处的恢复模式? - Sphynx

5
据我所知,您的选择是ApexSQL Log(价格昂贵但有免费试用版),或者使用未记录的SQL Server命令,例如DBCC Log和fn_dblog。
如果您的数据库处于完全恢复模式下,任何一种方法都只能起作用,因为在此情况下,SQL Server会在事务日志中存储更多详细信息。
此外,我认为这并不适用于任何类型的事务。我见过人们使用此技术来还原插入、更新、删除操作,但我不确定它是否可用于还原ALTER TABLE等操作。

1
免费试用版仅会为每10条记录生成撤销脚本。 - viggity

4

就第三方软件而言,您可以使用戴尔的Toad软件免费试用三十天,它具有事务日志和撤销脚本生成能力。


3

请查看RedGate的LogRescue产品。如果没有第三方产品,你可能只能进行点时间还原到单独的数据库,然后手动将记录复制回生产数据库。


4
根据其网页,LogRescue仅适用于SQL Server 2000。 - Samuel Jack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接