为什么身份种子在 SQL 服务器中显示错误值?

Why is Identity Seed showing the wrong value in SQL Server?

我已经使用以下命令将种子值设置为 1 到 100,但是 SQL 服务器仍然显示 1 作为身份种子值,它应该是。

DBCC CHECKIDENT (TableName, RESEED, 100);

当我运行这个SELECT IDENT_SEED('TableName') 的时候,还是显示1,设计上也是显示1。

当我将记录插入表格时,它被正确插入,我的意思是仅在 100 之后。

SSMS 版本:18.4

IDENT_SEED 不是 return table 的当前种子,你所拥有的正在运行。来自 IDENT_SEED (Transact-SQL):

Returns the original seed value specified when creating an identity column in a table or a view. Changing the current value of an identity column by using DBCC CHECKIDENT doesn't change the value returned by this function.

强调我的。

如果要查看当前种子,请按照DBCC CHECKIDENT中的说明进行操作:DBCC CHECKIDENT (N'dbo.YourTable', NORESEED);

示例:

USE Sandbox;
GO

CREATE TABLE dbo.IdentID (ID int IDENTITY(1,1));
GO

INSERT INTO dbo.IdentID
DEFAULT VALUES;
GO
--Returns 1
SELECT *
FROM dbo.IdentID;
GO
--Returns 1
SELECT IDENT_SEED(N'dbo.IdentID') AS IDENTSEED;
GO
--Returns 1 for identity value, as it gives the last used value
DBCC CHECKIDENT (N'dbo.IdentID', NORESEED);
GO

DBCC CHECKIDENT (N'dbo.IdentID', RESEED, 100);
GO
--Returns 1
SELECT IDENT_SEED(N'dbo.IdentID') AS IDENTSEED;
GO
--Returns 100 for identity value
DBCC CHECKIDENT (N'dbo.IdentID', NORESEED);
GO
INSERT INTO dbo.IdentID
DEFAULT VALUES;
GO
--Returns rows with IDs of 1 and 101
SELECT *
FROM dbo.IdentID;
GO

GO

DROP TABLE dbo.IdentID;