を使用できますか
DBCC CHECKIDENT(<table_name>, RESEED, value)
SQL Server 2008 で ID 列の現在の値を元の値にリセットするコマンドは?
はいの場合、これは欠点を伴わずにこの操作を行う正しい方法ですか? そうでない場合、これを行う別の方法はありますか?
を使用できますか
DBCC CHECKIDENT(<table_name>, RESEED, value)
SQL Server 2008 で ID 列の現在の値を元の値にリセットするコマンドは?
はいの場合、これは欠点を伴わずにこの操作を行う正しい方法ですか? そうでない場合、これを行う別の方法はありますか?
値は省略できます。したがって、使用する場合
DBCC CHECKIDENT (<table_name>, RESEED);
SQL Server は、既に使用されている番号に従って、ident 値を正しい次の番号に設定します。これは、私が知っている ID 値を再シードする唯一の方法です。
DBCC CHECKIDENT コマンドを使用して、ID 列の現在の値を SQL Server 2008 の元の値にリセットできますか?
はい。
はいの場合、これは欠点を伴わずにこの操作を行う正しい方法ですか?
これは、文書化された方法の 1 つです。
考えられる欠点: 重複するIDENTITY
値を取得する可能性があります。まだ使用されていない値が返されないという SQL Server の保証はありません。
たとえば、IDENTITY
現在が 100 で、それを 1 にリセットすると、遅かれ早かれ、既に使用されている値が生成される可能性があります。
SQL Server に実装されているはIDENTITY
、既存の値などをチェックしません。連続した番号を生成するだけです。特に、値が重複していないことを確認するためRESEED
にそれを行った場合は、あなた次第です。IDENTITY
フィールドが主キーであり、他のテーブルの外部キーへの参照である場合にのみ、大きな欠点があります。再シードは、フィールドにインデックスを持つトランザクション テーブル内のレコードのフェッチに役立ちます。