*

【SQLServer2012】IDENTITY 設定した値が不自然な増加

SQLServer2012でIDENTITYで採番しているフィールドのインクリメントが
おかしくなる件。
意図しない番号増が発生します。。

同じことを2008、2014で試してみたけど再現しませんでした。

T007

id・・・Numeric(18,0) ID ENTITY  にしておいて…

T001
このテーブルに対してInsertを実行。IDENTITYの値を取得。( SELECT SCOPE_IDENTITY() の方がいいんだけど…w)
1がとれます。

T002
もう1回やると…
2になります。

T003
ここでSQLServerのサービスを再起動。

T004
再度Insertを実行すると…
取得した値は 10002…  急に10000も増えました。

T005
再度サービス再起動からのInsert実行で…
さらに10000増加してしまいました。

T006

当然テーブルの中身を見るとこんな感じ。

この時に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...

記事を読む

no image

【備忘録】SQLServer ストアドメモ

今日調べて解決したもの。大したもんじゃないけど。 *引数の省略 ...

記事を読む

【備忘録】PHP + SQLServer で文字が切れる。

PHP(バージョン5.2.14) + SQLServer で ms...

記事を読む



新着記事

no image

【備忘録】WordPressをPHP8.0に上げたらContactFormが動かなくなった。

久々の更新。 会社で使ってるWordpressの環境をPHP8...

記事を読む

備忘:GWのさわやかの待ち時間

5/4 さわやか鴨江店。 開店前に並んで発券システムで順番ゲット。開...

記事を読む

no image

【備忘録】Abema大相撲中継で使われてる曲

メインテーマ 注目力士 一つ前のテーマ曲 初代のテーマ曲の...

記事を読む

久々に更新。内容はたわいもない事。

どうも、更新をさぼっていたわけではなく、ただただ備忘として記録を更新す...

記事を読む

備忘録:VB.NET schema.iniの使い方。

メモ。 VB.NETでCSVファイルをDataTableに突っ込むと...

記事を読む

コメント/トラックバック

トラックバック用URL:

コメントフィード




管理人にのみ公開されます



no image
【備忘録】WordPressをPHP8.0に上げたらContactFormが動かなくなった。

久々の更新。 会社で使ってるWordpressの環境をPHP8...

備忘:GWのさわやかの待ち時間

5/4 さわやか鴨江店。 開店前に並んで発券システムで順番ゲット。開...

no image
【備忘録】Abema大相撲中継で使われてる曲

メインテーマ 注目力士 一つ前のテーマ曲 初代のテーマ曲の...

久々に更新。内容はたわいもない事。

どうも、更新をさぼっていたわけではなく、ただただ備忘として記録を更新す...

備忘録:VB.NET schema.iniの使い方。

メモ。 VB.NETでCSVファイルをDataTableに突っ込むと...

→もっと見る

  • 地方都市のソフトハウスでPG.SEの経験を積み現在は某所某社の社内SE。 基本的に飽きやすい性格。 社内SEの日常報告と調べたことを忘れないように記録していく場所。
%d人のブロガーが「いいね」をつけました。