Jurang Lajur Identiti SQL Server 2012: Penyelesaian Masalah dan Penyelesaian
Lajur identiti penambahan automatik SQL Server 2012 kadangkala mempamerkan tingkah laku yang tidak dijangka, melangkau nilai—contohnya, melonjak daripada 6 terus kepada 1000 pada sisipan ketujuh. Artikel ini meneroka punca dan menyediakan penyelesaian yang berkesan.
Memahami Isu
Tingkah laku kenaikan yang tidak teratur berpunca daripada pengenalan urutan SQL Server 2012 untuk penjanaan nilai identiti. Perubahan ini mempengaruhi cara kunci identiti diberikan:
Menyelesaikan Masalah
Beberapa pendekatan boleh menangani isu ini dan memastikan kenaikan lajur identiti berurutan:
Kaedah 1: Menyahaktifkan Caching
Untuk memulihkan tingkah laku pra-2012, lumpuhkan caching menggunakan arahan ini:
<code class="language-sql">ALTER DATABASE [YourDatabase] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER TABLE [TableWithIdentity] ADD PRIMARY KEY ([ColumnName]) WITH (IDENTITY(1, 1)); GO ALTER DATABASE [YourDatabase] SET MULTI_USER;</code>
Kaedah 2: Menggunakan Bendera Surih 272
Dayakan bendera surih 272 untuk memantau setiap nilai identiti yang dijana. Pengelogan terperinci ini boleh mengenal pasti masalah dengan mekanisme caching jujukan.
Kaedah 3: Menggunakan Urutan NO CACHE
Buat penjana jujukan yang dikonfigurasikan secara eksplisit tanpa caching (NO CACHE
). Ini menjamin kenaikan berurutan yang ketat, menghalang jurang.
<code class="language-sql">CREATE SEQUENCE [YourSequenceName] AS INT START WITH 1 INCREMENT BY 1 NO CACHE; ALTER TABLE [TableWithIdentity] ADD PRIMARY KEY ([ColumnName]) WITH (IDENTITY(1, 1)); GO</code>
Dengan melaksanakan penyelesaian ini, anda boleh mengekalkan gelagat yang diharapkan bagi lajur identiti SQL Server 2012 anda, menghalang ketidakkonsistenan dan jurang data.
Atas ialah kandungan terperinci Mengapa Lajur Identiti SQL Server 2012 Saya Melangkau Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!