RESEED数据库上的标识列

Lor*_*nzo 8 sql-server identity-column sql-server-2008

我可以用吗?

DBCC CHECKIDENT(<table_name>, RESEED, value)
Run Code Online (Sandbox Code Playgroud)

命令将标识列当前值重置为SQL Server 2008中的原始值?

如果是的话,这是正确的做法,没有任何缺点吗?如果没有,是否有另一种方法可以做到这一点?

Man*_*org 10

该值可以省略.所以,如果你使用

DBCC CHECKIDENT (<table_name>, RESEED);
Run Code Online (Sandbox Code Playgroud)

SQL Server根据已使用的数字将ident值设置为正确的下一个数字.这是我知道的重新定位身份值的唯一方法.


mar*_*c_s 8

我可以使用DBCC CHECKIDENT命令将标识列当前值重置为SQL Server 2008中的原始值吗?

是.

如果是的话,这是正确的做法,没有任何缺点吗?

这是记录下来的方法.

可能的缺点:您最终可能会获得重复IDENTITY值 - SQL Server无法保证它不会返回尚未使用的值.

例如,如果您IDENTITY当前为100,并将其重置为1,则可能迟早会产生一个已经使用的值.

IDENTITYSQL Server中的实现不检查现有的值或任何东西-它只是生产序列号.这取决于你 - 特别是如果你做了一个RESEED,IDENTITY以确保价值不重复.