这是一个测试环境,我需要一些数据来测试Update查询,但是意外地更新了所有行中的列以获得错误的数据。我是否必须使用备份将数据还原回以前的实例,或者是否有一些我可以利用的事务日志的秘密?
提前致谢。
答案 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你说出问题的方式......
据我所知,您无法撤消更新的数据:(
希望我错了 祝你好运。