有没有办法将DBCC CheckIdent的值存储到变量中?

dgs*_*h15 3 sql t-sql syntax stored-procedures

我正在尝试做这样的事情:

declare @myCurrentSeedValue int;
select @myCurrentSeedValue = DBCC CheckIdent('MyTable', NORESEED);
Run Code Online (Sandbox Code Playgroud)

这显然是不正确的语法.有没有人有任何关于如何实现这一目标的建议?

我知道我可以这样做:

select @myCurrentSeedValue = IDENT_SEED('MyTable');
Run Code Online (Sandbox Code Playgroud)

但问题是IDENT_SEED函数上的每个MSDN:

使用DBCC CHECKIDENT更改标识列的当前值不会更改此函数返回的值.

这可能有问题,因为我们有其他存储过程将调用DBCC CHECKIDENT并重新设置标识列,所以我实际上需要当前种子而不是原始种子.

ljh*_*ljh 10

使用Ident_current可以获取表的当前标识,无论哪个进程更新表标识.它适用于任何会话,任何范围.


declare @myCurrentSeedValue int;
select @myCurrentSeedValue = IDENT_CURRENT( 'MyTable' )
select @myCurrentSeedValue
Run Code Online (Sandbox Code Playgroud)