Pengecualian kenaikan identiti dalam pangkalan data SQL Server
Dalam pangkalan data SQL Server, kenaikan Identiti lajur "No Receipt" pada jadual "Yuran" mempamerkan gelagat yang tidak konsisten, dengan nilai kenaikan melonjak selepas dimulakan semula.
Fenomena abnormal ini terutamanya dicerminkan dalam tiga senario berikut:
Perlu diingat bahawa tiga digit terakhir (306) kekal sama semasa lompatan ini. Selain itu, isu ini hanya berlaku selepas komputer dimulakan semula.
Analisis sebab:
Tingkah laku ini adalah hasil langsung daripada pengoptimuman prestasi yang diperkenalkan dalam SQL Server 2012. Pangkalan data kini menggunakan saiz cache 1000 apabila memberikan nilai IDENTITY kepada lajur integer. Apabila perkhidmatan dimulakan semula, nilai yang tidak digunakan dalam cache akan hilang.
Kehalusan ini didokumenkan dalam dokumentasi SQL Server, yang menyatakan bahawa jurang dalam nilai Identiti mungkin berlaku disebabkan caching dan boleh menyebabkan masalah semasa kegagalan pangkalan data atau pelayan dimulakan semula.
Penyelesaian:
Jika jurang tersebut tidak diingini, pertimbangkan penyelesaian berikut:
Nota Penting:
Perlu ambil perhatian bahawa tiada satu pun daripada penyelesaian ini dijamin bebas jurang sepenuhnya. Kenaikan identiti sememangnya membawa risiko jurang akibat transaksi serentak dan kemungkinan kegagalan sisipan. Untuk penyelesaian yang benar-benar tanpa jurang, pendekatan lain mesti diambil.
Atas ialah kandungan terperinci Mengapa Peningkatan Identiti Pelayan SQL Saya Melompat Selepas Dimulakan Semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!