8

我可以使用

DBCC CHECKIDENT(<table_name>, RESEED, value)

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

如果是,这是进行此操作的正确方法而没有任何缺点吗?如果没有,是否有另一种方法可以做到这一点?

4

3 回答 3

10

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

DBCC CHECKIDENT (<table_name>, RESEED);

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

于 2010-11-12T14:13:33.477 回答
8

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

是的。

如果是,这是进行此操作的正确方法而没有任何缺点吗?

这是一种记录在案的方法。

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

例如,如果您的IDENTITY当前值为 100,并且您将其重置为 1,那么迟早会产生一个已经在使用的值。

IDENTITYSQL Server 中实现的 不检查现有值或任何东西 - 它只是产生序列号。这取决于您 - 特别是如果您对此进行了RESEED操作IDENTITY以确保值不重复。

于 2010-11-12T13:58:17.173 回答
-1

当且仅当字段是主键并且引用任何其他表中的任何外键时,它有一个很大的缺点。重新播种有助于获取具有字段索引的事务表中的记录。

于 2011-02-16T06:54:22.020 回答