none
Identity specification Yes RRS feed

  • Soru

  • sql tablosunda ıd kolonu primary key ve identity specification Yes , identity increment 1 , identity seed 1 olarak set edilmiş durumda . c# ile kodumun hiç bi yerinde id değerine müdahale etmiyorum. yeni kayıt gelince 1 er 1 er artıyor. Yani genelde böyle yapıyor. ama 10 ila 20 kayıt arası bir durumda id değeri 1000 artıyor. 

    demek istediğim 

    id =1

    id =2

    id =3

    id =4

    id =5

    id =6

    id =1004

    id =1005 ........

    id =1016.......

    id =2014......

    2015 .....

    29 Aralık 2017 Cuma 07:13

Tüm Yanıtlar

  • Merhaba,

    En son güncelleme paketinin yüklü olduğundan emin olun. Aşağıdaki linki referans alabilirsiniz.

    https://support.microsoft.com/en-us/help/321185/how-to-determine-the-version--edition-and-update-level-of-sql-server-a 

    Sonrasında sorununuz devam ediyorsa Identity kolonları için şu düzenlemeyi uygulayın.

    1. Id alanının Identity Özelliğini kaldırın.

    2. Aşağıdaki Fonksiyonu create edin.

    ------------------------------------------------

    CREATE FUNCTION fn_GetNextID (@ID int)
    RETURNS int
    AS
    BEGIN
     DECLARE @NextID int
     SELECT @NextID = @ID+1
     RETURN @NextID
    END
    GO
    --------------------------------------------

    3. ID değerinin Computed Column Spesification özelliğinin Formula kısmına =fn_GetNextId(ID) 

    formülünü girin.

    Sorununuz çözülmüş olacaktır.

    İyi Çalışmalar,

    29 Aralık 2017 Cuma 07:35
  • Merhaba Ayranci,

    SQL Server 2012'den itibaren eğer Database Engine servisi temiz olmayan bir şekilde kapatılırsa (örnek: SHUTDOWN WITH NOWAIT) o zaman böyle bir sonuç ile karşılaşabilirsin. Bunun nedeni SQL Server 2012 ile birlikte gelen Identity değer üretimindeki bir davranış değişikliği. SQL Server 2012 ile birlikte Identity üretiminin verimini arttırmak için bir Cache mekanizması devreye alındı. Bu mekanizmayı kapatmak için Startup Parameter olarak -T272'yi kullanabilirsin veya SQL Server 2017 ile birlikte gelen aşağıdaki komutu (ilgili veritabanı için) kullanabilirsin.

    ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF


    http://ekremonsoy.blogspot.com | http://www.ekremonsoy.com | @EkremOnsoy

    29 Aralık 2017 Cuma 09:14
  • Eğer bir INSERT komutu hataya yol açsa da IDENTITY değeri bir sonraki değerle güncellenir.

    Eğer bir şekilde bu aralıkta bir şekilde hatalı kayıtlar oluşturulmaya çalışıyorsa, IDENTITY değerinde bu kadar çok atlama olabilir belki.


    SQL Server, SQL Server 2012 Denali and T-SQL Tutorials

    5 Ocak 2018 Cuma 13:46