Rumah > pangkalan data > tutorial mysql > Mengapa Lajur Identiti SQL Server 2012 Saya Melangkau Nilai?

Mengapa Lajur Identiti SQL Server 2012 Saya Melangkau Nilai?

Mary-Kate Olsen
Lepaskan: 2025-01-18 02:39:10
asal
968 orang telah melayarinya

Why Does My SQL Server 2012 Identity Column Skip Values?

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:

  • Caching Nilai Dalaman: Urutan menggunakan caching untuk pengoptimuman prestasi, pra-peruntukkan julat nilai.
  • Sisipan Pukal: Memasukkan berbilang baris secara serentak boleh menyebabkan jurang. Urutan memperuntukkan blok nombor; nilai yang tidak digunakan dalam blok itu mencipta langkauan jika tidak semuanya digunakan serta-merta.

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan