Belirtiler
Kümelenmiş veya benzersiz dizini olan bir tabloda güncelleştirme çalıştırdığınızda ve güncelleştirme birincil olmayan benzersiz bir sütunda gerçekleştirildiğinde, değişiklik izleme kaydı güncelleştirme deyimiyle tutarsız olur.
Örneğin, kümelenmiş dizine veya benzersiz dizine "sütun1" adlı bir sütunun eklendiğini varsayalım. Sütun değeri büyük bir değerden daha küçük bir değere değiştirildiğinde (20 olan değeri 16 olarak değiştirmek gibi), silme işleminden önce değişiklik izleme yan tablosu ekleme işlemini alır. Örneğin, işlem günlüğü satır kaydı ekleme işlemi satır silme işleminden önce alınır veya "I" "D"den önce eklenir.
| Sys_change_version | sys_change_create_version | sys_change_operation | sys_change_column | sys_change_context | PK_column |
|---|---|---|---|---|---|
| 1116 | 19 | I | NULL | NULL | 5639485628 |
| 1116 | 20 | D | NULL | NULL | 5639485628 |
Sütun değeri daha küçük bir değerden daha büyük bir değere değiştirildiğinde (örneğin, değeri 16'dan 20'ye değiştirdiğinde), "I"den önce "D" eklenir.
| Sys_change_version | sys_change_create_version | sys_change_operation | sys_change_column | sys_change_context | PK_column |
|---|---|---|---|---|---|
| 1126 | 32 | D | NULL | NULL | 5639485628 |
| 1126 | 33 | I | NULL | NULL | 5639485628 |
Neden
Bu sorun, değişiklik izleme yan tablosundaki silme/ekleme çiftleri arasındaki yanlış sıralama nedeniyle oluşur.
Çözüm
Bu sorunun düzeltmesi aşağıdaki SQL Server güncelleştirmelerinde bulunmaktadır:
Cumulative Update 8 for SQL ServerSQL Server 2017
SQL Server 2016 Service Pack 1 için Toplu Güncelleştirme 9
SQL Server 2014 SP2 için Toplu Güncelleştirme 12
SQL Server derlemeleri hakkında
SQL Server için her yeni derleme, bir önceki derlemede yer alan tüm düzeltmeleri ve güvenlik düzeltmelerini içerir. SQL Server için en son derlemeyi yüklemenizi öneririz:
En son toplu güncelleştirme SQL ServerSQL Server 2017
SQL Server 2016 için en son derleme
SQL Server 2014 için en son toplu güncelleştirme
Durum
Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.
Daha fazla bilgi
Değişiklik izleme etkinleştirilmiş bir tabloda, benzersiz olarak tanımlanmış birincil olmayan bir sütunda güncelleştirme yapıldığında, değişiklik izleme yan tablosuna iki giriş eklenir: Bölme eylemlerinin her biri için bir girdi, Ekle ve Sil.
Değişiklikleri listelemek için CHANGETABLE işlevi çağrıldığında, bu girişler birincil anahtar değerlerine göre sıralanır ve ardından işlemler toplanır. Güncelleştirme daha düşük bir değer eklerse, önce yan tabloda bir "I" işlemi, ardından bir "D" işlemi çalıştırılır. Bu, bu satır için yanlış bir işlemin döndürülmesine neden olur. Bunun nedeni, "I" ve ardından "D" harfinin "D" olarak toplanmasıdır.
Yan tablolarda yalnızca birincil anahtar değerleri korunduğundan, iki ayrı giriş olması gerekmez. Birincil anahtar sütunu güncelleştirilmediği sürece bu durum geçerlidir.
Birincil olmayan benzersiz sütunlar için bu sorun düzeltilmiştir. Bu durumda, güncelleştirme gerçekleştiğinde, "D" ve "I" içeren iki giriş yerine güncelleştirme işlemi olarak "U" ile yalnızca bir satır eklenir.
Başvurular
Microsoft'un yazılım güncelleştirmelerini tanımlamak için kullandığı terminoloji hakkında bilgi edinin.