错误地在表上运行了更新语句

错误地在表上运行了更新语句

我们错误地对 SQL 表中的某列运行了更新语句。我们没有该表或数据库的备份。有人能帮助我们检索更新前该列的值吗?

答案1

我很遗憾地告诉大家,你刚刚给自己一个教训。

有没有办法从其他来源重新获取数据,比如历史日志文件?我们经常会保留日志,记录事物何时被更改以及由谁更改;这样可以帮助你找到某个事物的最后值。

为了将来参考,当我编写 UPDATE 语句时,我总是首先输入

UPDATE mytable SET qq=ww WHERE {where clause}

也就是说,我直接输入“qq=ww”,这肯定是非法的,而且在我输入任何可以实际执行的内容之前,我输入了实际的 WHERE 子句。我认为子句的反向顺序是 SQL 语言的设计错误。

答案2

如果您仍有当前日志文件,则可以使用第三方工具恢复数据。大多数情况下,UPDATE 语句都会被完整记录。以下是一些需要查找的工具:

ApexSQL 的 Apex SQL 日志

RedGate 的 SQL 日志救援

如果您在没有备份的情况下运行简单恢复模式,然后运行 ​​UPDATE 语句,然后进行备份,那么您将失去从当前日志中恢复的能力。在简单恢复模式下,当您进行备份时,日志文件会被截断。

答案3

在运行批量更新之前,您应该始终对每个将受到影响的表进行备份。

它会让你停下来思考,至少不会有什么别的。我见过有人在交易中这样做,然后立即提交,而不检查它是否正确的不仅仅是成功的

答案4

另外,在交易中做这样的事情还有另一个原因。

相关内容