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

时间:2010-11-22 19:50:59

标签: sql-server-2005 database-restore transaction-log

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

提前致谢。

4 个答案:

答案 0 :(得分:5)

有一个称为事务日志的非秘密事务日志,您可以将其恢复到某个时间点。 Here's how...带有ldf扩展名的恼人的小文件是事务日志,而不是正常数据库数据.mdf文件。

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

答案 1 :(得分:2)

如果您的数据库处于完全恢复模式,那么您可以尝试使用第三方工具(例如this one)读取事务日志,或者您可以尝试使用DBCC LOG命令自行执行此操作。

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

然而,有一些解决方法可以使用上面的工具(不幸的是付费工具但是有试用版)或者自己解码DBCC LOG的结果。

答案 2 :(得分:1)

除非您将sql包装在事务块中,否则不会 - 开始事务,回滚,提交。关于sql server的一个危险的事情。使用Oracle,您必须在物理上提交每个事务,这样会更加安全。

答案 3 :(得分:-2)

男人...我很抱歉,但这让我发笑:D你说出问题的方式......

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

希望我错了

祝你好运。