我们在SQL Server 2008 R2上有数据库,并且一个表中的数据不时会神秘地消失。数据通过Web应用程序调用存储过程插入数据库中。用户输入数据并保存后,由于业务逻辑,他必须打印这些数据。但就像我之前说的那样,有时候数据会从有20列的表中消失;一列(让我们称之为id_column)是PK并且具有identity(1,1)属性。检查表中的数据后,我们发现了id_column值之间的差距,例如:100,101,102,103,106 ......所以缺少104和105。在那些id-s应该是缺少的数据,我们知道它们在那里,因为我们已经打印了报告。我们在此表上设置了而不是删除触发器,但未删除已删除的行。此外,我们还从发生时恢复了日志备份,但在日志文件中没有删除操作。你能帮忙解释一下它们是如何消失的以及如何预防这种情况吗?提前谢谢。
答案 0 :(得分:3)
如果事务已启动但随后回滚,您将在ID中出现间隙。 如果删除触发器没有触发,并且您没有在事务日志中看到删除,我会说删除从未发生过。但回滚可能会。