最近、データベース(SQL Server 2008)を別のサーバーに移動する必要がありましたが、テーブルの1つで、ID列の値が予期しない値を取得し始めていることに気付きました。ID増分1とIDシード1のID列として設定されます。連続する10エントリ程度ごとに、別のはるかに高い番号から開始し、次の10エントリ程度で1ずつ増加してから、別の高い番号にジャンプします。私は問題を理解できないようです。
素人の言葉でごめんなさい。私はDBの人ではありません。
最近、データベース(SQL Server 2008)を別のサーバーに移動する必要がありましたが、テーブルの1つで、ID列の値が予期しない値を取得し始めていることに気付きました。ID増分1とIDシード1のID列として設定されます。連続する10エントリ程度ごとに、別のはるかに高い番号から開始し、次の10エントリ程度で1ずつ増加してから、別の高い番号にジャンプします。私は問題を理解できないようです。
素人の言葉でごめんなさい。私はDBの人ではありません。
これは、IDキーの問題ではなく、データの挿入に使用されているフレームワークまたはSPの問題である可能性があります。データを挿入してからロールバックされるストアドプロシージャがある場合、IDは予約されていますが、行は「削除」されます。
したがって、確認する場所は2つあります。1つは使用しているフレームワーク(NHibernate、またはEntity Frameworkなど)です...これらのフレームワークは行を挿入してから削除している可能性があります。2番目に確認する場所は、SPROCおよびROLLBACKが予想されるその他の場所でのINSERTステートメントです。
参照:トランザクションロールバックを使用してもSQL ID(自動番号)がインクリメントされる
もう1つの問題は、データを並べ替えずに調べているだけかもしれないということです。また、データを移植すると、常にID順に挿入または取得されると想定していました。ただし、新しいテーブルは同じように「インデックス付け」されていないため、必ずしも主キーの順序でアイテムが表示されるとは限りません。ほとんどの場合、行がギャップを伴って連続して表示される場合、これは起こりにくいですが、言及する価値があります。
以下はあなたの問題にいくつかの光を当てます。
delete from mytable where id=10
1,2,3,4,5,6,7,8,9,**11**