IDENT_CURRENT的基础数据存储在哪里?

时间:2018-10-16 15:33:52

标签: sql-server

好吧..一个愚蠢的问题。老实说,这对我在做什么并不重要,但我必须知道!

我创建了一个带有IDENTITY(1,1)列的表。我没有插入任何行。我用过

DBCC CHECKIDENT(table, RESEED, 10000)

我运行以下命令:

SELECT IDENT_CURRENT('table')
SELECT last_value, seed_value
FROM sys.identity_columns
WHERE [object_id] = OBJECT_ID('table');

第一个返回10000。第二个返回NULL,1(原始种子值)。

10000存储在哪里?

1 个答案:

答案 0 :(得分:1)

此文档未记录,可能会更改,但存储在idtvalsys.syscolpars的最左X个字节中。

X的值取决于基础列的数据类型。对于int,它是4。

运行后立即

CREATE TABLE [table1](Foo int IDENTITY)

以下查询(只能使用DAC执行)...

SELECT *,
       CAST(CAST(REVERSE(LEFT(idtval, 4)) AS BINARY(4)) AS INT)
FROM   sys.syscolpars
WHERE  id = OBJECT_ID('table1') 

...返回

enter image description here

运行后

DBCC CHECKIDENT([table1], RESEED, 10000)

返回

enter image description here