Ini masih menjadi masalah yang sangat umum di antara banyak pengembang dan aplikasi terlepas dari ukurannya.
Sayangnya saran di atas tidak memperbaiki semua skenario, yaitu Shared hosting, Anda tidak dapat mengandalkan host Anda untuk menyetel parameter startup -t272.
Juga, jika Anda memiliki tabel yang sudah ada yang menggunakan kolom identitas ini untuk kunci utama, itu adalah upaya BESAR untuk melepaskan kolom tersebut dan membuat ulang yang baru untuk menggunakan solusi urutan BS. Solusi Urutan hanya bagus jika Anda mendesain tabel baru dari awal di SQL 2012+
Intinya adalah, jika Anda menggunakan Sql Server 2008R2, TETAP TETAP. Serius, tetaplah di sana. Hingga Microsoft mengakui bahwa mereka memperkenalkan bug BESAR, yang masih ada bahkan di Sql Server 2016, maka kita tidak boleh memutakhirkan sampai mereka memilikinya dan MEMPERBAIKI.
Microsoft langsung memperkenalkan perubahan besar, yaitu mereka merusak API yang berfungsi yang tidak lagi berfungsi seperti yang dirancang, karena fakta bahwa sistem mereka melupakan identitas mereka saat ini saat restart. Cache atau tidak ada cache, ini tidak dapat diterima, dan pengembang Microsoft bernama Bryan harus memilikinya, alih-alih memberi tahu dunia bahwa itu "berdasarkan desain" dan "fitur". Tentu, caching adalah sebuah fitur, tetapi kehilangan jejak tentang identitas selanjutnya, BUKANLAH FITUR. Ini BUG fricken !!!
Saya akan membagikan solusi yang saya gunakan, karena DB saya ada di server Shared Hosting, juga, saya tidak menghapus dan membuat ulang kolom Kunci Utama saya, itu akan menjadi PITA yang besar.
Sebaliknya, ini adalah peretasan saya yang memalukan (tetapi tidak memalukan seperti bug POS yang diperkenalkan oleh Microsoft).
Retas / Perbaiki:
Sebelum memasukkan perintah Anda, cukup reseed identitas Anda sebelum setiap sisipan. Perbaikan ini hanya disarankan jika Anda tidak memiliki kontrol admin atas instance Sql Server Anda, jika tidak, saya sarankan untuk melakukan reseeding saat restart server.
declare @newId int -- where int is the datatype of your PKey or Id column
select @newId = max(YourBuggedIdColumn) from YOUR_TABLE_NAME
DBCC CheckIdent('YOUR_TABLE_NAME', RESEED, @newId)
Hanya 3 baris itu tepat sebelum sisipan Anda, dan Anda harus melakukannya dengan baik. Ini benar-benar tidak akan terlalu mempengaruhi kinerja, yaitu tidak akan terlihat.
Semoga berhasil.
order by ReceiptNo
ke kueri Anda, apakah rekaman itu benar-benar tidak ada? Apakah Anda yakin saat record disisipkan tidak ada kesalahan? Jika rekaman mencoba untuk dimasukkan dan gagal, identitas akan bertambah, hal yang sama jika rekaman dihapus. Jika catatan dihapus,ReceiptNo
tidak direset. Bisakah Anda memposting buat tabel untukFee
tabel?