Sql server自动递增随机

Sql server自动递增随机,sql,sql-server,Sql,Sql Server,好的,我用这个代码来制作表格: CREATE TABLE Clients ( ID int IDENTITY(1,1) PRIMARY KEY, NAME varchar(20) NOT NULL, BALANCE int NOT NULL, ) 它在最初几次运行良好,之后当我添加新记录时,它会像随机id一样给出它: 我真的不知道是什么问题,所以你可以告诉我吗?这一切都很正常。Microsoft在SQL Server 2012中添加了 默认情况下,创建序列时,可以提供缓存大小。缓存用于通过最

好的,我用这个代码来制作表格:

CREATE TABLE Clients
(
ID int IDENTITY(1,1) PRIMARY KEY,
NAME varchar(20) NOT NULL,
BALANCE int NOT NULL,
)
它在最初几次运行良好,之后当我添加新记录时,它会像随机id一样给出它:


我真的不知道是什么问题,所以你可以告诉我吗?

这一切都很正常。Microsoft在SQL Server 2012中添加了

默认情况下,创建序列时,可以提供缓存大小。缓存用于通过最小化生成序列号所需的磁盘IO数量来提高使用序列对象的应用程序的性能

要解决此问题,您需要确保在序列创建/属性中添加一个无缓存选项,如下所示

CREATE SEQUENCE TEST_Sequence
    AS INT
    START WITH 1
    INCREMENT BY 1
    MINVALUE 0
    NO MAXVALUE
   NO CACHE

  • 使用跟踪标志272-这将导致生成日志记录 对于每个生成的标识值。身份的表现 打开此跟踪标志可能会影响生成
  • 使用无缓存设置的序列生成器 ()
  • 这是一个非常奇怪的“功能”-感谢分享,我不知道这甚至会被M$developers认为是一个好主意缓存是原因,但您不能
    无缓存
    标识
    值。但不管它值多少钱,您都应该期望
    标识
    值每次按步长递增,但您不能依赖它(缓存或不缓存),因为语句可能会使用标识值。。。现在生成的标识值在乙醚中丢失。