我正在使用SQL Server 2008来维护一个数据库,其中我有一个userAcccounts
表,其中在网站上注册时存储了用户详细信息。 userID
列是一个带有标识的整数。
我注意到的是,不知何故,该列正在跳过一些ID(随机数量的ID,有时它会跳过5,11,10等),即ID不是连续的。我读了similar question here,其中有类似的问题,建议
“每次尝试插入时,身份序列都会递增 - 这包括失败或回滚INSERT“
我已经检查了我的日志中的错误,但是在跳过id的期间没有错误。此外,我的插入不在任何事务中进行回滚,因为不需要删除帐户。注册期间也不涉及其他表格
虽然这不是一个主要问题,因为ids将是独一无二的,我想知道的是为什么这种行为? 也许我忽视了一些事情。
是否还有其他可能发生此类行为的情况?即标识栏跳过一些ID?这可能是并发访问的问题吗?
这是表的创建脚本。
CREATE TABLE [dbo].[UserAccounts](
[AccountID] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [varchar](30) NULL,
[LastName] [varchar](30) NULL,
[Gender] [varchar](10) NULL,
[Email] [varchar](150) NULL,
[EmailVerified] [bit] NULL,
[UserName] [varchar](30) NULL,
[Password] [varchar](50) NULL,
[ProfilePicture] [varchar](150) NULL,
[BackgroundPicture] [varchar](150) NULL,
[DateOfBirth] [smalldatetime] NULL,
[CreateDate] [smalldatetime] NULL,
[LastUpdatedOn] [smalldatetime] NULL,
[Points] [int] NULL,
[CurrentBadge] [varchar](30) NULL,
[FBID] [varchar](50) NULL,
[TwitterID] [varchar](50) NULL,
[Abused] [int] NULL,
[isActive] [bit] NULL,
[AccountTypeID] [int] NULL,
[DateStamp] [timestamp] NOT NULL,
[Location] [varchar](50) NULL,
[About] [varchar](250) NULL,
[UsingBackgroundPicture] [bit] NULL,
CONSTRAINT [PK__UserAcco__349DA5867F60ED59] PRIMARY KEY CLUSTERED
(
[AccountID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
对此方面的任何帮助表示赞赏?如果您需要任何其他细节,请告诉我。
由于
答案 0 :(得分:0)
如果没有在每个事务上全局锁定整个数据库,就不可能保证Sequences或ID的准确顺序 - 以防止任何并发事务,这可能也会要求ID。
这显然会将其降低为有效的单用户数据库,并完全破坏性能。
由于这些原因,明确无法保证连续顺序性。