3

最近、データベース(SQL Server 2008)を別のサーバーに移動する必要がありましたが、テーブルの1つで、ID列の値が予期しない値を取得し始めていることに気付きました。ID増分1とIDシード1のID列として設定されます。連続する10エントリ程度ごとに、別のはるかに高い番号から開始し、次の10エントリ程度で1ずつ増加してから、別の高い番号にジャンプします。私は問題を理解できないようです。

素人の言葉でごめんなさい。私はDBの人ではありません。

4

2 に答える 2

4

これは、IDキーの問題ではなく、データの挿入に使用されているフレームワークまたはSPの問題である可能性があります。データを挿入してからロールバックされるストアドプロシージャがある場合、IDは予約されていますが、行は「削除」されます。

したがって、確認する場所は2つあります。1つは使用しているフレームワーク(NHibernate、またはEntity Frameworkなど)です...これらのフレームワークは行を挿入してから削除している可能性があります。2番目に確認する場所は、SPROCおよびROLLBACKが予想されるその他の場所でのINSERTステートメントです。

参照:トランザクションロールバックを使用してもSQL ID(自動番号)がインクリメントされる

もう1つの問題は、データを並べ替えずに調べているだけかもしれないということです。また、データを移植すると、常にID順に挿入または取得されると想定していました。ただし、新しいテーブルは同じように「インデックス付け」されていないため、必ずしも主キーの順序でアイテムが表示されるとは限りません。ほとんどの場合、行がギャップを伴って連続して表示される場合、これは起こりにくいですが、言及する価値があります。

于 2012-12-21T18:28:03.547 に答える
0

以下はあなたの問題にいくつかの光を当てます。

  1. ID自動インクリメント列を持つテーブルを作成します
  2. 10行のランダムデータを挿入します
  3. ID値が1、2、3、4、5、6、7、8、9、10であることがわかります。
  4. delete from mytable where id=10
  5. テーブルに別の行を挿入します
  6. これで、ID値が次のようになります。1,2,3,4,5,6,7,8,9,**11**
于 2012-12-21T18:43:52.183 に答える