Bu, boyutundan bağımsız olarak birçok geliştirici ve uygulama arasında hala çok yaygın bir sorundur.
Ne yazık ki yukarıdaki öneriler tüm senaryoları, yani Paylaşılan barındırma, düzeltmez, ana makinenizin -t272 başlangıç parametresini ayarlamasına güvenemezsiniz.
Ayrıca, birincil anahtarlar için bu kimlik sütunlarını kullanan mevcut tablolarınız varsa, bu sütunları kaldırmak ve BS dizisi geçici çözümünü kullanmak için yenilerini yeniden oluşturmak BÜYÜK bir çabadır. Sıra geçici çözümü yalnızca SQL 2012+ sürümünde tabloları sıfırdan yeni tasarlıyorsanız işe yarar
Alt satırda, eğer Sql Server 2008R2 üzerindeyseniz, ONUN ÜZERİNDE KALIN. Cidden, üzerinde kalın. Microsoft, Sql Server 2016'da bile hala var olan BÜYÜK bir hata çıkardığını kabul edene kadar, ona sahip olana ve BT'yi düzeltene kadar yükseltmemeliyiz.
Microsoft, doğrudan bir çığır açan değişiklik başlattı, yani sistemleri yeniden başlatıldığında mevcut kimliklerini unuttuğu için artık tasarlandığı gibi çalışmayan çalışan bir API'yi bozdu. Önbellek veya önbellek yok, bu kabul edilemez ve dünyaya "tasarım gereği" ve "özellik" olduğunu söylemek yerine, Bryan adındaki Microsoft geliştiricisinin ona sahip olması gerekiyor. Elbette, önbelleğe alma bir özelliktir, ancak bir sonraki kimliğin ne olması gerektiğinin izini kaybetmek BİR ÖZELLİK DEĞİLDİR. Bu lanet bir HATA !!!
Kullandığım geçici çözümü paylaşacağım, çünkü DB'lerim Paylaşılan Barındırma sunucularında, ayrıca Birincil Anahtar sütunlarımı bırakıp yeniden oluşturmuyorum, bu çok büyük bir PITA olurdu.
Bunun yerine, bu benim utanç verici hack'im (ancak microsoft'un sunduğu bu POS hatası kadar utanç verici değil).
Hack / Düzelt:
Ekleme komutlarınızdan önce, her eklemeden önce kimliğinizi yeniden göndermeniz yeterlidir. Bu düzeltme yalnızca Sql Server örneğiniz üzerinde yönetici kontrolünüz yoksa önerilir, aksi takdirde sunucuyu yeniden başlattığınızda yeniden beslemenizi öneririm.
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)
Sadece ekinizden hemen önceki 3 satır ve gitmekte fayda var. Gerçekten performansı o kadar fazla etkilemeyecek, yani fark edilmeyecek.
İyi şanslar.
order by ReceiptNo
Sorgunuza eklerseniz , bu kayıtlar gerçekten orada değil mi? Kayıtlar eklenirken hata olmadığından emin misiniz? Bir kayıt yerleştirilmeye çalışırsa ve başarısız olursa, kimlik artacaktır, kayıtlar silinirse de aynı şey olacaktır. Kayıtlar silinirseReceiptNo
sıfırlanmaz. Tablo için oluşturma tablosunu gönderebilir misinizFee
?