8

を使用できますか

DBCC CHECKIDENT(<table_name>, RESEED, value)

SQL Server 2008 で ID 列の現在の値を元の値にリセットするコマンドは?

はいの場合、これは欠点を伴わずにこの操作を行う正しい方法ですか? そうでない場合、これを行う別の方法はありますか?

4

3 に答える 3

10

値は省略できます。したがって、使用する場合

DBCC CHECKIDENT (<table_name>, RESEED);

SQL Server は、既に使用されている番号に従って、ident 値を正しい次の番号に設定します。これは、私が知っている ID 値を再シードする唯一の方法です。

于 2010-11-12T14:13:33.477 に答える
8

DBCC CHECKIDENT コマンドを使用して、ID 列の現在の値を SQL Server 2008 の元の値にリセットできますか?

はい。

はいの場合、これは欠点を伴わずにこの操作を行う正しい方法ですか?

これは、文書化された方法の 1 つです。

考えられる欠点: 重複するIDENTITY値を取得する可能性があります。まだ使用されていない値が返されないという SQL Server の保証はありません。

たとえば、IDENTITY現在が 100 で、それを 1 にリセットすると、遅かれ早かれ、既に使用されている値が生成される可能性があります。

SQL Server に実装されているはIDENTITY、既存の値などをチェックしません。連続した番号を生成するだけです。特に、値が重複していないことを確認するためRESEEDにそれを行った場合は、あなた次第です。IDENTITY

于 2010-11-12T13:58:17.173 に答える
-1

フィールドが主キーであり、他のテーブルの外部キーへの参照である場合にのみ、大きな欠点があります。再シードは、フィールドにインデックスを持つトランザクション テーブル内のレコードのフェッチに役立ちます。

于 2011-02-16T06:54:22.020 に答える