【发布时间】:2013-04-18 09:32:09
【问题描述】:
我有一个使用 SQL Server 作为后端运行了大约 10 年的 .NET 应用程序。出于某种原因,在过去的 2-3 个月中,它决定跳过大约 990 个(我认为是 997 两次,989 一次)IDENTITY 号码 3 次。我想不出系统所做的任何活动会生成记录然后删除它们或尝试多次插入。这是一个非常间歇性的问题,但它很奇怪,我想深入了解它。有没有人对如何寻找原因有任何想法?
该系统混合了不同的技术——旧的东西是 ADO.NET,而新的东西是 Linq to SQL。我认为记录每个执行的语句或任何内容是不可行的,因为它是一个拥有大量用户的非常活跃的系统。
【问题讨论】:
-
看到了,但我不担心这里和那里的奇怪跳过。我知道什么样的事情会导致身份被跳过,但我不认为任何应该正在运行并且它过去从未做过,所以我想知道如何跟踪关闭导致它的查询。
-
可能没有导致它的查询。差距可能纯粹出于内部原因(例如,文档mentions 缓存是一个原因),所以没有什么可以“修复”的。您可以使用 SQL Profiler,但您的真正问题似乎是用户将无意义的数字视为有意义,因此您需要关注这个问题。或许您可以改进应用程序 GUI 以减少数据输入中的错误,或者他们确实需要一个顺序(或有意义的)ID,但从未明确要求过。
-
我很难相信这类似于缓存问题 - 我无法相信它会缓存 1000 多个 ID,其规模相当于 10 年内生成了大约 30000 条记录的表,并且然后报废它们,除非缓存算法出现问题。问题不在于应用程序中的数据输入——当他们使用这些 ID 作为文档和电子邮件中的参考时,问题更多。他们没有理由必须依赖绝对顺序,但是在他们存在 10 年后,他们已经养成了这样思考的习惯
标签: sql-server identity