代码之家  ›  专栏  ›  技术社区  ›  Haoest

如何撤消对数据库所做的更新语句

  •  2
  • Haoest  · 技术社区  · 14 年前

    这是一个测试环境,我需要一些数据来测试更新查询,但意外地更新了所有行中的一个列以获得错误的数据。我必须使用备份将数据还原回上一个实例,还是事务日志中有一些秘密可以利用?

    提前谢谢。

    4 回复  |  直到 14 年前
        1
  •  5
  •   Paul Sasik    14 年前

    有一个名为事务日志的非机密事务日志,您可以从中恢复到某个时间点。 Here's how... 那个带有ldf扩展名的烦人的小文件是事务日志,而不是.mdf文件,它是普通的数据库数据。

    除非您已经截断了事务日志(ldf)或以其他方式破坏了它,否则您应该能够完全执行您正在寻找的恢复(undo)类型。

        2
  •  2
  •   George Ober    12 年前

    如果数据库处于完全恢复模式,则可以尝试使用第三方工具(如 this one 或者您可以尝试使用DBCC LOG命令自己执行此操作。

    如果数据库处于完全恢复状态,那么很多数据都存储在事务日志中,但它不容易读取,因为MS从未为此完善过官方文档,而且它的目的不是恢复,而是确保事务被正确提交。

    不过,也有一些解决方法,可以像使用上面的工具(不幸的是,付费工具有试用版)一样阅读它,或者自己解码DBCC日志的结果。

        3
  •  1
  •   hoakey    14 年前

    除非您将sql包装在事务块中—开始事务、回滚、提交。这是sql server最危险的地方之一。使用Oracle,您必须实际提交每个事务,这样imho会更安全。

        4
  •  -2
  •   Rami Alshareef    14 年前

    伙计。。。我很抱歉,但它让我笑了:D你说问题的方式。。。

    据我所知,您无法撤消更新的数据:(

    希望我错了

    祝你好运。