6

10000(私はそれはバグだと思ったけど、この記事http://www.codeproject.com/Tips/668042/SQL-Server-2012-Auto-Identity-Column-Value-Jump-Isを読んだ後、私はそれがこの機能は、1000(int型)によって、あなたの最後のID列の値をインクリメントし、SQL Serverの2012Microsoft SQL Server 2012の新しいIDジャンプ機能がどのようにデータ型の範囲を処理するのですか?

の新機能だことを発見し、新しい行のためのbigints)を自動的に作成します。

enter image description here

私はまだ記事に与えられたソリューションをしようとしていますが、このジャンプは、クライアント側で発生した場合、私は問題ありません。私はクライアントにIDのハッシュバージョンを示しているので。彼自身の要求は私のものではありません。

しかし、これらのID列の値がデータ型(intまたはbigint)の範囲を超えるとどうなると思いますか?どのように列の範囲とサイズを処理するのですか?

+2

物品の溶液は非常に簡単で、5分かかります。私は* -t272 *のソリューションを適用し、正常に動作します。 –

答えて

4

既存のID列は、 "サーバー:メッセージ8115、レベル16、状態1、行2 IDENTITYをデータ型intに変換する算術オーバーフローエラーで失敗します。算術オーバーフローが発生しました。説明はhttp://www.sql-server-performance.com/2006/identity-integer-scope/を参照してください。

アイデンティティ・ジャンプの動作が異なるとは考えられません。早い段階で未使用の身元を捜して捜してほしくはありません。

+0

リンクとhttp://stackoverflow.com/questions/13132939/what-happens-when-i-exhaust-a-bigint-generated-key-how-to-handle-itが混乱を解消してくれてありがとうございます.MySQLそれがポイントを作っています。私が0から始まって段階的に値を追加する場合、3億年と67,108,863テラバイトの空き領域が必要になります。最大のbigintは9223372036854775807.Atであり、これは106751991167日の価値です。@ CraigRingerによって説明されているように約3億年です。唯一の問題は最大限を挿入するときです。しかし、あなたの記事ではエラーが発生すると述べています。 –

2

は、なぜあなたは、次のようになりますシーケンスのMS Serverで2012

サンプルコードをシーケンスを使用していない、あなたはシーケンスを作成するには、ADMIN権限を必要としません。場合

CREATE SEQUENCE SerialNumber AS BIGINT 
START WITH 1 
INCREMENT BY 1 
MINVALUE 1 
MAXVALUE 9999999 
CYCLE; 
GO 

あなたは、単純な配列とリード「0」を追加する必要がある場合は、次のコードでそれを行う:

RIGHT ('0000' + CAST (NEXT VALUE FOR SerialNumber AS VARCHAR(5)), 4) AS SerialNumber 
-7

問題は、SQL Serverの更新プログラムの最新バージョンで修正されました。それはバグだった。

同じバージョンを使用したい場合は、間隔を置いてIDを確認し、1000s値を超えた場合は現在のIDで再確認する必要があります。

このスクリプトでは、シード値、インクリメント値と現在のID列の値 http://blog.sqlauthority.com/2014/08/29/sql-server-query-to-find-seed-values-increment-values-and-current-identity-column-value-of-the-table-with-max-value-of-datatype-part-2/

私の提案を知るのを助けることができる:再送パッチ、CUまたはサービスパックを適用します。

+4

この修正プログラムに関するすべてのドキュメントにリンクできますか?接続項目の最新のアップデートは表示されませんhttps://connect.microsoft.com/SQLServer/feedback/details/739013/failover-or-restart-results-in-reseed-of-identity制御マネージャのシャットダウンに関する問題は、ある時点で解決されます。 –

+5

どのような問題が正確に修正された、私は理解していない。 –

関連する問題