在sql server 2012中撤消更新查询

时间:2014-02-18 09:40:17

标签: sql-server

我是SQL的新手,所以作为一个新手,我犯了一个错误。 我在没有where子句的情况下执行了更新查询,而现在只更新了一行,而是更新了所有行。现在我要撤消它。我google了它,并有选项来运行ROLLBACK。但我的疑问是

  

更新tblname set mode =''

所以我认为回滚不起作用。此外,我没有配置备份,所以我也无法恢复它。我尝试使用SQLApexlog。但没有成功。

那么有什么方法可以让所有记录都回来。

3 个答案:

答案 0 :(得分:4)

ApexSQL Log可以帮助您进行意外更新。在此处查看更多信息:How to recover SQL Server data from accidental updates without backups

但是,请记住,当数据库处于完全恢复模式并且有完整的数据库备份时,它会提供最佳结果。

  

但是有5000多条记录被更新,所以我已经选择所有这些5000+记录到UNDO

是的,但这很容易选择。要恢复所有更新的记录,首先只选择数据意外更新的表(或服务器进程ID,如果可以将其删除)。确保未选中所有其他表。

enter image description here

在“操作”标签中,仅选择更新行

enter image description here

最后,在主网格中使用上下文菜单选择所有行(右键单击网格中的任意位置)。实际上,您甚至不必选择网格中的行来创建撤消脚本,只需单击菜单中的创建撤消脚本即可。

甚至可以更快速地为所有记录创建撤消脚本。不要在网格中打开结果,而是使用导出结果到文件选项

enter image description here

免责声明:我作为支持工程师为ApexSQL工作

答案 1 :(得分:2)

没有。完成。把它作为一个教训。错误:

  • 执行agaisnt生产数据库的手动查询。始终对副本执行此操作,将其编写出来。
  • 没有备份。

答案 2 :(得分:0)

作为一个新手,它可能发生在任何人身上。最重要的是,你永远不应该让它再次发生。有一个名为ApexSQL的工具可以回滚事务。下载here