Alt*_*tex 6 sql-server sql-server-2012
它们似乎是相当大的跳跃,甚至成千上万.这是一个例子:
该表的最后一个ID超过了30.000标记,即使表中的行数少于一千行.
编辑:这发生在我的一个旧的,小型的桌面应用程序中,我还没有删除此表中的行,也没有使用任何事务和回滚.
Gre*_*reg 11
这是在SQL服务器中设计的.SQL Server保证生成的下一个数字将是唯一的和增量的,但不保证它将按顺序排列.
这是从SQL 2012开始的.只需重新启动服务即可重现问题.众所周知,行为的变化,一直以这种方式记录,并以设计为标志.它只是一种意想不到的行为改变
是什么造成的?
我想到了几个潜在的原因:
id
?可能会有更多我没想到的潜在原因.
我怎么能在将来防止这种情况发生?
取决于原因.但这确实是一个有争议的问题.你为什么要"防止这种情况"?这种情况究竟出了什么问题?标识符不需要是连续的,它们只需要是唯一的.(最好是索引顺序,否则数据库必须重新构建索引.)
如何阻止我现在的桌子在这条黑暗的道路上继续?
......生成唯一标识符的黑暗之路?好吧,我猜你可以手动提供唯一标识符.GUID对于那种事情很有用.但是有利有弊.(我不知道最近的实现是否已经改进了这一点,但历史上GUID并没有提供良好的聚簇索引.)
归档时间: |
|
查看次数: |
9384 次 |
最近记录: |