システム内のオブジェクトの追跡番号を生成するシーケンスがあります。かなり前から問題なく動作していました。
先週、値を再利用し始めていることに気づきました。
起こっているように見えるのは、夕方の異なる時点で、前日の値にロールバックすることです。その後、そのポイントから値を生成し続けます。
たとえば、次のようなものを取得できます。
10112
10113
10114
10115
10116
10117
10118
10113
10114
10115
10116
...
いつ、最初の使用から2回目の使用までの期間(わずか10分または数時間)、または何回ロールバックされるか(わずか1回から数百回)には、パターンはないようです。
トレースを実行することを検討しました(まだ実行する可能性があります)が、シーケンスオブジェクトが直接変更されているとは思わない。私がこれを信じる理由は、変更日が数日前であり、重複を試みて排除するために手動で値を上げた時を指しているからです。(それ以降、この問題は数回発生しています。)
誰もがシーケンスのロールバックを引き起こし、毎晩値を再利用する可能性があるという考えを持っていますか?
更新:コメントでいくつかの質問に答えるには:
@@Version
:Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64)2012年10月19日13:38:57
スクリプトを作成:
CREATE SEQUENCE [schemaName].[SequenceName] AS [bigint] START WITH 410014104 INCREMENT BY 1 MINVALUE 410000000 MAXVALUE 419999999 CYCLE CACHE GO
固有の制約はありません(ただし、制約を設定する予定です)。しかし、それは私がいつ値を再利用したかを知るのに役立つだけです。値がリセットされた原因ではありません。私は5分ごとに新しい値を取得し、それを節約するジョブを実行しました。時間と値のジャンプはパターンに従いません。
- イベントログをチェックして、エラーがないか確認しました。起こっていると思うのはこれだけです:http : //support.microsoft.com/kb/2793634 本日修正を適用しています。これらは関連しているとは思いませんが、関連している可能性があります。