【SQLServer2012】IDENTITY 設定した値が不自然な増加
SQLServer2012でIDENTITYで採番しているフィールドのインクリメントが
おかしくなる件。
意図しない番号増が発生します。。
同じことを2008、2014で試してみたけど再現しませんでした。
id・・・Numeric(18,0) ID ENTITY にしておいて…
このテーブルに対してInsertを実行。IDENTITYの値を取得。( SELECT SCOPE_IDENTITY() の方がいいんだけど…w)
1がとれます。
もう1回やると…
2になります。
ここでSQLServerのサービスを再起動。
再度Insertを実行すると…
取得した値は 10002… 急に10000も増えました。
再度サービス再起動からのInsert実行で…
さらに10000増加してしまいました。
当然テーブルの中身を見るとこんな感じ。
この時にSELECT IDENT_CURRENT(‘Table_1’) as ID でIDを取得すると
サービス再起動前は 20002 で この状態で再起動すると 30002 に。
一気に10000増加するとか本当に困ります。
このへんで同じような情報もありました。
これ読むと
-
サーバーの再起動または他のエラーが発生した後の連続した値: SQL Server では、パフォーマンス上の理由から ID 値をキャッシュすることがあります。割り当てられた値の一部は、データベースの障害やサーバーの再起動が発生したときに失われることがあります。 その結果、挿入時に非連続的な ID 値が生成される場合があります。 非連続的な値が許可されない場合、アプリケーションでは、シーケンス ジェネレーターを NOCACHE オプションを指定して使用するか独自のメカニズムを使用して、キー値を生成する必要があります。
ってありますが…。
シーケンステーブル作ってやった方がいいのかしら。。
<追記>
IDENTITY プロパティ使用時の動作について
MS サポートブログに載ってました。
Bigintの場合に10000キャッシュされるようですね。。
仕様か。。
関連記事
-
-
いまさらNULLIFを知る。。
備忘録。 SQLServerの0除算対策。 2008以降から使えるよ...
-
-
PHPとSQLServerでvarcharの256文字を超えるデータを扱う時。
メモ。 SQLServerのVarchar(1000)の型に突っ...
-
-
【備忘録】SQLServer生存確認⇒起動(簡易) 【VB.NET】
めっちゃ雑だけど。 Imports System.Service...
-
-
【備忘録】SQLServer ストアドメモ
今日調べて解決したもの。大したもんじゃないけど。 *引数の省略 ...
-
-
【備忘録】PHP + SQLServer で文字が切れる。
PHP(バージョン5.2.14) + SQLServer で ms...
新着記事
-
-
【備忘録】WordPressをPHP8.0に上げたらContactFormが動かなくなった。
久々の更新。 会社で使ってるWordpressの環境をPHP8...
-
-
備忘:GWのさわやかの待ち時間
5/4 さわやか鴨江店。 開店前に並んで発券システムで順番ゲット。開...
-
-
【備忘録】Abema大相撲中継で使われてる曲
メインテーマ 注目力士 一つ前のテーマ曲 初代のテーマ曲の...
-
-
久々に更新。内容はたわいもない事。
どうも、更新をさぼっていたわけではなく、ただただ備忘として記録を更新す...
-
-
備忘録:VB.NET schema.iniの使い方。
メモ。 VB.NETでCSVファイルをDataTableに突っ込むと...
PREV : WidowsXP アップデートに失敗
NEXT : Visual Studioのセットアッププロジェクト
コメント/トラックバック
トラックバック用URL:
コメントフィード