SQL Server 2008 R2 中的偷偷回滚

Val*_*rie 1 sql-server sql-server-2008-r2 transaction-log

是否可以在 SQL Server 2008 R2 中回滚一整套已提交的事务而无需任何通知或日志记录?

本周末,我们在 HA 集群 SQL Server 2008 R2 环境中显然回滚了一组数据。数据存在,现在不存在。SQL Server 错误日志中没有任何内容,群集日志中也没有任何内容。最初加载数据的 SQL Server 代理作业成功运行(包括从进程本身发送的进度电子邮件)。

唯一没有回滚的是批量插入的数据。数据库设置为完全恢复,因此批量插入的数据也应该回滚,对吗?

很抱歉缺乏细节,但我真的很难过。甚至想不出还有什么地方可以看。

Mar*_*ith 5

正如 Remus 简洁地指出的那样,没有任何秘密功能可以在不记录的情况下回滚事务。也无法回滚已提交的事务。

您的代码已损坏,而不是 SQL Server。

根据很少的细节,我可以设想的唯一情况是现在丢失的数据已作为一个长时间运行的分布式事务插入,有人通过未提交的读取看到数据,随后事务被回滚。

最有可能是故障的逻辑或分析中的错误。人为错误和掩饰可能更是如此。