2010-11-22 36 views
2

这是一个测试环境,我需要一些数据来测试Update查询,但意外地更新了所有行中的列以发现错误数据。我是否必须使用备份将数据恢复到以前的实例,或者是否有一些我可以利用的事务日志的秘密?如何撤销我对数据库的更新声明

在此先感谢。

+0

应该使用BEGIN TRAN T1 ... COMMIT TRAN T1或Rollback..etc中的事务。 – JonH 2010-11-22 20:08:52

回答

5

有一个称为事务日志的非秘密事务日志,您可以从中恢复到某个时间点。 Here's how...这个令人讨厌的带有ldf扩展名的小文件是事务日志,与作为正常db数据的.mdf文件相反。

除非您截断了事务日志(ldf)或以其他方式删除了它,否则您应该能够执行所需的恢复(撤消)。

-2

人......我很抱歉,但它让我笑:d你的方式短语的问题...

据我所知,你不能撤消更新的数据:(

希望我“M错

好运

+2

-1是的,这是一个可爱的问题,这不是一个可爱的答案。这是不正确的,应该是充其量的评论。欢迎来到SO Rami,但是请阅读FAQ。谢谢。 – 2010-11-22 19:58:44

+0

ops,对不起。 – 2010-11-22 20:00:25

1

除非你包裹你的SQL事务中的块 - 。开始交易,回滚,提交这的有关SQL Server危险的事情之一借助Oracle,你必须身体提交各交易,这是非常安全的imho。

2

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

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

但是,有些解决方法可以像使用上述工具(付费工具不幸,但有试用版)一样阅读它,或者自行解码DBCC LOG的结果。