我有一个奇怪的问题,我将我的应用程序部署到生产中。申请工作正常。我也用一些本地数据上传了数据库。一天后,数据库ID增加10000.我不知道为什么以及如何。见下图。蓝色来自当地环境,黄色来自生产。
此外,当我连接到生产服务器并尝试打开任何表进行编辑时,我收到错误:
不支持此后端版本来设计数据库图表或表。 (MS Visual Database Tools)
如果这个增量有些怎么连接到这个?
答案 0 :(得分:0)
似乎微软认为这是一个“功能”,而不是一个错误。根据我发现解释它的站点,SQL Server将在重新启动服务器时执行此操作(可能是为了防止重复的ID?),并且增量的大小取决于列的数据类型,因此INT字段将跳过1,000并且BIGINT将跳过10,000。
请阅读此处以获取更多信息,但基本上如果您关心身份列的价值,请注意不要使用标识列,而是创建一系列数字。
http://www.codeproject.com/Tips/668042/SQL-Server-2012-Auto-Identity-Column-Value-Jump-Is
答案 1 :(得分:0)
SQL Server 2012具有与SEQUENCE
共享的新身份实现。这种不幸的行为是故意的。
Enable trace flag 272 on startup.
使用跟踪标志272.这将导致日志记录 为每个生成的标识值生成。的表现 打开此跟踪标志可能会影响身份生成。 •
使用带有NO CACHE的序列生成器 设置(http://msdn.microsoft.com/en-us/library/ff878091.aspx)o这个 将导致为每个生成的序列生成日志记录 值。注意,序列值生成的性能可以是 使用NO CACHE影响。
不要依赖身份值来连续。尽管如此,这些大跳跃在很多方面都很烦人。