SQL Serverの自動インクリメント主キーの上限は何ですか? SQL Serverの自動インクリメント主キーが上限に達するとどうなりますか?
Joelの答えは正解です。これは、使用するデータ型の上限です。
そのうちの2つの例を次に示します。
私は実際に働いていた仕事で限界に達しました。実際のエラーは次のとおりです。
メッセージ8115、レベル16、状態1、行1 IDENTITYをデータ型intに変換する算術オーバーフローエラー。 算術オーバーフローが発生しました。
これにはいくつかの修正があり、頭のてっぺんから考えることができます。 1番はおそらく非常に難しく、可能性は低いです。2番は簡単ですが、コードベースに問題が発生する可能性があります。
おそらく他の修正もありますが、簡単な魔法の弾丸はありません。関係の中心であるテーブルではこれが起こらないことを願っています。これは難しい修正ではなく、退屈で長い修正です。
データ型によって異なります。 bigintを使用する場合、オーバーフローする可能性はほとんどありません。通常のintでも、数十億行になります。あふれたことは一度もないので、あふれたらどうなるかわかりません。
どうなるか教えてあげます...私のデータはその特定のテーブルへの挿入を停止しました。データベースはまだ機能していますが、データが欠落していて一貫性がないことがわかりました。少し調べてみると、エラーテーブルが見つかり、手動で挿入しました。エラーは上記と同じです。
列をBIGINTに変更する必要がありました。やや遅いサーバー上の26GBデータベースでは、約30分かかりました。データベースのアーカイブバージョン(150GB程度)では、かなり時間がかかりました。
幸いにも、このテーブルの関係はそれほど多くないので、痛みはごくわずかでした。
DBCC CHECKIDENT(SomeTable、RESEED、1)
これにより、テーブル 'SomeTable'のIDが1にリセットされます。
これがこれを行うための最良の方法であるかどうかはわかりません。
データ型の説明:
BIGINT Integer data from -2^63 through 2^63 - 1
INT Integer data from -2^31 through 2^31 - 1
SMALLINT Integer data from -2^15 through 2^15 - 1
TINYINT Integer data from 0 through 255
上限に達すると、自動インクリメントは下限になります。