错误地在桌上跑了一个更新声明

我们错误地在SQL表中的某个列上运行了更新声明。 我们没有表和数据库的备份。 任何人都可以帮助我们在更新之前检索列的值。

我很遗憾地说,你刚刚教训自己一个教训。

有没有办法从其他来源重新获取数据,也许是历史的日志文件? 我们经常保存日志,logging事情发生变化的时间和人物; 这样的事情会帮助你find最后的价值。

为了将来的参考,当我写一个UPDATE语句时,我总是先input

UPDATE mytable SET qq=ww WHERE {where clause} 

也就是说,我的字面意思是input“qq = ww”,这是非法的,在我input任何可以实际执行的东西之前,input实际的WHERE子句。 我认为子句的反向顺序是SQL语言中的一个devise错误。

如果您仍然有当前的日志文件,则可以使用第三方工具恢复数据。 在大多数情况下,UPDATE语句被完全logging。 这里有几个工具可以查找:

ApexSQL的Apex SQL日志

SQL日志抢救由RedGate

如果你正在运行简单的恢复模式,没有备份,然后运行你的UPDATE语句,然后做了一个备份,你已经失去了从当前日志中恢复的能力。 在简单恢复模式中,日志文件在进行备份时会被截断。

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

如果没有别的东西,它会让你停下来思考。 我已经看到人们在交易中这样做,然后立即提交,而不检查是否正确 ,而不仅仅是成功

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