如何回滚SQL Server中的更改

时间:2009-11-03 01:54:46

标签: sql-server-2005

我错误地更新了生产数据库的数据。有没有办法回滚这些交易。  我已经从管理工作室执行了更新语句,而脚本没有 开始Trans / rollback / commit。

由于

3 个答案:

答案 0 :(得分:3)

以下是我在这种情况下要做的事情:

  1. 在单独的数据库中还原备份并比较这些数据库以恢复备份中存在的行?

  2. 如果您的数据库处于完全恢复模式,请尝试读取事务日志以恢复剩余的行。

  3. 为了读取事务日志,您可以使用第三方工具,例如ApexSQL Log,或者尝试通过fn_dblog函数自己执行此操作(here是一个示例,但它非常复杂)。

    以下是此主题的其他帖子:

    Read the log file (*.LDF) in SQL Server 2008

    How can I rollback an UPDATE query in SQL server 2005?

答案 1 :(得分:2)

没有交易(或者甚至是已提交的交易),没有简单的方法来恢复所做的更改。

交易对于确保对数据库的一系列更改作为单个单元执行非常有用,即,以便[按照规定的顺序]执行所有这些更改,或者根本不执行任何更改(或者更确切地说,数据库服务器回滚所做的任何变化都会在所有变更完成之前出现问题。

根据与数据库关联的恢复模型,SQL日志文件可能有以下两种方式之一:

  • 如果您有备份,并且在此备份之后立即启动了日志文件,则日志文件可能有助于将数据库“前滚”到问题中提到的不幸更改之前的点。 (又名时间点恢复)
  • 如果没有可用的备份,日志文件可能适合撤消不幸的更改

这两种方法都暗示SQL日志确实维护,因为某些恢复模型会导致日志文件在每次成功批处理/事务后被截断(其数据丢失)。 这些方法都不容易,后者尤其可能需要第三方软件(或长篇程序)等。

答案 2 :(得分:0)

根据备份的设置方式,您可以进行即时恢复。和你的DBA交谈。您可能还希望尽快使数据库脱机,以防止在执行还原时最终会丢失更多更改。