Azure DB顺序编号

Azure DB顺序编号,azure,sql-server-2012,azure-sql-database,Azure,Sql Server 2012,Azure Sql Database,目前,我在Azure中设计数据库时遇到一些问题,具体如下: SQL2012自动递增键可以/将相当定期地跳跃1000,这与SQL 2012的新“功能”有关,如本文所述。这已在Connect中的“按设计”关闭 建议使用启动标志来避免这种行为(Azure无法做到),或者使用序列来生成递增的数字 但是,Azure DB中不支持序列。事实上,它在Connect上交替出现活动问题和“无法修复”问题 所以,我的问题是,如何在插入到Azure DB表时让字段自动递增1,同时避免较大的间隙 我确实考虑过使用触发器

目前,我在Azure中设计数据库时遇到一些问题,具体如下:

  • SQL2012自动递增键可以/将相当定期地跳跃1000,这与SQL 2012的新“功能”有关,如本文所述。这已在Connect中的“按设计”关闭

  • 建议使用启动标志来避免这种行为(Azure无法做到),或者使用序列来生成递增的数字

  • 但是,Azure DB中不支持序列。事实上,它在Connect上交替出现活动问题和“无法修复”问题

  • 所以,我的问题是,如何在插入到Azure DB表时让字段自动递增1,同时避免较大的间隙

    我确实考虑过使用触发器,然后使用它来查找现有的最大值。看起来不干净。我还认为这会导致并发问题

    我很高兴在这里有一个代理键,但如果没有序列,我想知道在插入时为代理项实际生成值的推荐路径是什么

    谢谢你的建议


    编辑:请注意,我使用的是旧的“Web/Business”类型的数据库,而不是新的层;我不知道这是否会对任何答案产生影响。

    您的反馈之所以被标记为原来的状态,是因为按1自动递增在大规模的数据库层上是一个很难解决的问题。如果你“分片”你的数据库(分割它以应付负载),那么每个分片如何知道增加到哪个数字?这应该从数据库中提取并构建到应用程序逻辑中

    如果不知道递增数字的背景要求,就很难提出正确的解决方案。它是为了唯一性还是为了序列?如果它是一个序列,那么它不是每次都增加1真的很重要吗?只要数字是(a)唯一的,并且(b)每次插入都增加?能否将此序列的设置设置为脱机过程?也就是说-通过批处理使用插入日期/时间来分配序列号


    如果是为了唯一性,请使用GUID或类似工具。

    我的反馈?不确定这是什么意思?背景要求是账户包中的增量发票号。增加几个数字不是什么大问题,但每两天增加1000个数字对我的最终用户来说是不可接受的。因此,我使用了代理密钥,而不是前端的标识字段。目前,我完全按照你说的做,并使用计划任务分配序列号,但我认为一定有更好的更“SQL”的方法来完成。我是指你对Microsoft Connect的反馈。这与我无关,它们不是我对它们的评论。为什么你不能有一个存储LastInvoiceNumber的表并从中获取下一个数字?我就是这么做的。