Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 12359|Yanıt: 1

[Kaynak] SQL Server 2012 otomatik büyütme sütunları ve değer sıçraması sorunları var

[Bağlantıyı kopyala]
Yayınlandı 23.08.2018 12:03:06 | | | |
Giriş

SQL Server 2012 sürümlerinden itibaren, SQL Server örneği yeniden başlatıldığında, tablonun otomatik büyütme sütununun değeri sıçrar ve özel sıçrama değeri büyüme sütununun veri türüne göre belirlenir. Veri tipi int ise, sıçrama değeri 1000'dir, veri türü bigint ise sıçrama değeri 10000'dir. Projemizden bu tür zıplama sorunu kabul edilemez, özellikle müşteri tarafında gösterildiğinde. Bu garip sorun sadece SQL Server 2012 ve sonrasında var ve SQL Server 2012'den önceki sürümlerde yoktur.


arka plan

Birkaç gün önce, QA ekibimizden bir meslektaşımız şöyle dedi: Tablomuzdaki kendi kendine artan sütununun değeri açıklanamaz şekilde 10.000 arttı. Başka bir deyişle, tablomuzdaki kendi kendine artan sütunun son değeri 2200 idi, ancak şimdi yeni bir kayıt eklediğimizde, kendi kendine artan sütunun değeri 12200 oldu. İş mantığımızda, böyle durumlar müşteriye izin verilmez, bu yüzden bu sorunu çözmemiz gerekiyor.


Kod kullanımı

İlk başta hepimiz çok gariptik, bu nasıl oldu? Genellikle kendi kendine artan sütunlara elle herhangi bir değer eklemeyiz (kendi kendini şişen sütunlara elle değer eklemek sorun değil) ve kendiliğinden şişen sütunların değerleri veritabanı tarafından korunur. Çekirdek ekibimizden bir üye bu soruyu araştırmaya başladı ve cevabı buldu. Şimdi, bu sorunu ve meslektaşımın bulduğu çözümü ayrıntılı olarak açıklamak istiyorum.


Bu hatayı nasıl yeniden üretebilirim


SQL Server 2012'yi kurmanız ve ardından bir test veritabanı oluşturmanız gerekecek. Sonra kendi kendine büyüyen sütunlarla bir tablo oluşturun:
Şimdi iki veri parçası ekleyin:

Sonuçları gözden geçirin:






Bu noktada sonuç beklediğimiz gibi oldu. Şimdi SQL Server Servisinizi yeniden başlatın. SQL Service'i yeniden başlatmanın birkaç yolu vardır ve burada SQL Server Manager ile yeniden başlatıyoruz:



Yeniden başlattıktan sonra, az önce tabloya 2 veri parçası daha ekliyoruz:



Sonuçları gözden geçirin:




Şimdi SQL Server 2012'yi yeniden başlattıktan sonra sonuçları görüyorsunuz ve kendi kendine artan sütun değerleri 1002'den başlıyor. Yani, 1000 atladı. Daha önce belirtildiği gibi, eklediğimiz veri türü bigint ise, sıçrama değeri 10.000 olur.


Gerçekten bir HATA mı?

Microsoft, bunun bir özellik olduğunu, hata olmadığını ve birçok durumda faydalı olduğunu belirtiyor. Ama bizim durumumuzda böyle bir fonksiyona ihtiyacımız yok, çünkü bu kendi kendine artan veri müşterilere gösterilmek üzere ve müşteriler böyle sıçrayan veri görürse garip hissedecekler. Ve sıçrama değeri, SQL Server'ı kaç kez yeniden başlattığınıza göre belirlenir. Bu veriler müşterilere gösterilmezse, kabul edilebilir olabilir. Bu nedenle, bu özellik genellikle sadece iç kullanım için uygundur.



çözüm

Microsoft'un sunduğu bu "özellik" bizi ilgilendirmiyorsa, kapatmanın iki yolu var.

1. Dizileri Kullanmak

2. SQL Server için -t272 başlangıç parametresini kaydet



Dizileri kullanın

Öncelikle, tablonun kendi kendine artan sütunlarını kaldırmamız gerekiyor. Sonra, önbellekleme olmadan bir dizis oluşturulur, bu sıradan sayısal değerler eklenir. İşte örnek kod:


Başlatma parametresi -t272'yi kaydedin

SQL Server Yapılandırma Yöneticisini aç. SQL Server 2012 örneğini seçin, sağ tıklayın ve Özellikler menüsünü seçin. Açılır pencerede başlatma parametrelerini bulun ve -t272 kaydını yapın. Tamamlandıktan sonra, aşağıdaki şekilde yer alan SQL Server (SQLSERVER2012)'yi yeniden başlatın ve sorunun çözülüp çözülmediğini doğrulamak için hata çoğaltma işlemini gerçekleştirin.




Ek Notlar:

Veritabanınızda çok sayıda kendini şişiren tablo varsa ve hepsinde sayısal sıçrama sorunları varsa, ikinci seçeneği kullanmak daha iyidir. Çünkü çok basit ve kapsamı sunucu seviyesinde. İkinci çözümün benimsenmesi, bu hizmet örneğindeki tüm veritabanlarını etkiler.





Önceki:Web sunucusu, durum kodu tipini ve anlamını döndürür
Önümüzdeki:SQL Server veritabanında kendi kendine büyüyen ID sütununun çalışma yöntemini güncelleyin
 Ev sahibi| Yayınlandı 8.07.2020 15:15:52 |
SQL Server özellikleri daha yüksek sürümlerde. Performans nedeniyle 1000 tanımlama değerini önceden "önbelle"
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com