好吧..一个愚蠢的问题。老实说,这对我在做什么并不重要,但我必须知道!
我创建了一个带有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存储在哪里?
答案 0 :(得分:1)
此文档未记录,可能会更改,但存储在idtval
中sys.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')
...返回
运行后
DBCC CHECKIDENT([table1], RESEED, 10000)
返回