【问题标题】:How can I rollback an UPDATE query in SQL server 2014?如何在 SQL Server 2014 中回滚 UPDATE 查询?
【发布时间】:2013-07-24 13:34:15
【问题描述】:

我知道以前版本的 SQL Server 曾多次问过这个问题,但我想知道这在 SQL Server 2014 中是否变得更容易了。

我熟悉此处显示的其他版本的技术

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

Undo table updates in SQL Server 2008

所以问题是:在 SQL Server 2014 中是否有任何允许回滚和更新查询的功能在以前的版本中不可用?

我说的是提交的命令——我知道如果查询在事务内部,你可以回滚。

我们有完整的、差异的和事务日志备份,但我们真的希望通过将备份恢复到辅助数据库等来避免恢复场景……

【问题讨论】:

  • 您可以考虑使用异步触发器来编写更新日志。这在 2014 年并不是什么新鲜事,但很可能会成功。

标签: sql-server sql-server-2014


【解决方案1】:

较新版本的 SQL Server 没有任何改变:提交的事务仍然被认为是永久的,因此回滚的唯一方法是恢复到以前的备份并应用到该点的事务日志。

已编辑以添加...
对于几个版本的 SQL Server,还有另一种工具,那就是快照。可以将数据库恢复到以前的快照,例如http://msdn.microsoft.com/en-us/library/ms189281(v=sql.105).aspx 处的 SQL 2008 说明。但是,这不能替代您仍需要保持可用的备份和事务日志。你还需要研究快照对性能的影响(如果有的话)——我不能保证它们的可用性:你可能会发现它们在开发或测试环境中是理想的,但对于生产环境却不是。

【讨论】:

    【解决方案2】:

    据我所知,这里没有什么新鲜事。 MS 专注于 SQL Server 中的企业级功能(内存查询、更高的可用性等)。

    据我所知,您撤消意外更新的选项是:

    • 第三方日志阅读器确实要花费一些美元(我知道 Apex LogQuest Toad,但可能还有其他)
    • 在另一个数据库中恢复最新备份并检查数据库之间的差异
    • 花费大量时间尝试使用 fn_dblog 函数读取事务日志,如 here 所示

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 2011-06-09
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多