SQL Server データベースでの ID 増分例外
SQL Server データベースでは、「Fee」テーブルの「ReceiptNo」列の ID 増分が一貫性のない動作を示し、再起動後に増分値が急上昇します。
この異常現象は主に次の 3 つのシナリオに反映されます。
これらのジャンプ中、最後の 3 桁 (306) が同じままであることに注意してください。さらに、この問題はコンピュータの再起動後にのみ発生します。
原因分析:
この動作は、SQL Server 2012 で導入されたパフォーマンスの最適化の直接の結果です。データベースは、IDENTITY 値を整数列に割り当てるときに、1000 のキャッシュ サイズを使用するようになりました。サービスを再起動すると、キャッシュ内の未使用の値は失われます。
この微妙な点は SQL Server のドキュメントに記載されており、キャッシュが原因で ID 値のギャップが発生し、データベースの障害やサーバーの再起動時に問題が発生する可能性があると記載されています。
解決策:
このようなギャップが望ましくない場合は、次の回避策を検討してください:
重要な注意事項:
これらのソリューションはいずれも完全にギャップがないことが保証されているわけではないことに注意することが重要です。 ID の増分には本質的に、同時トランザクションや潜在的な挿入エラーによるギャップのリスクが伴います。真にギャップのないソリューションを実現するには、他のアプローチを採用する必要があります。
以上が再起動後に SQL Server ID の増加が急激に増加するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。