Belirtiler
Microsoft SQL Server 2012 veya SQL Server 2014 ' de bir tabloya sütun eklediğiniz varsayılmıştır. Satırın boyutu 8.060 bayt olan izin verilen en büyük boyuta yakınsa, ekleme işlemi uzun zaman alabilir.
Neden
Sorun oluşur, çünkü satırın toplam boyutu izin verilen en yüksek satır boyutuna yakınsa, SQL Server yeni sütun eklemenin veri bütünlüğünü ihlal etmez. SQL Server 2012, bu denetimi yapmaz ve veri tanımlama dili (DDL) daha hızlı çalışır. Ancak, bu davranış, satır boyutu izin verilen boyutu aşarsa satır güncelleme veya küçültme gibi sonraki işlemlerin başarısız olmasına neden olur.
Çözüm
Toplu güncelleştirme, geriye dönük uyumluluk davranışı için yeni bir izleme bayrağı 647. Sorun ilk olarak SQL Server 'ın aşağıdaki toplu güncelleştirmesinde giderilmiştir.
SQL Server 2014 için toplu güncelleştirme 5 /en-us/help/3011055
SQL Server 2012 SP1 için toplu güncelleştirme 12 /en-us/help/2991533
SQL Server 2012 SP2 için toplu güncelleştirme 2 /en-us/help/2983175
Her bir SQL Server toplu güncelleştirmesi, önceki toplu güncelleştirmeyle birlikte gelen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. En son SQL Server güncelleştirmelerini gözden geçirin:
Ek Bilgi
-
Başlangıç parametresini kullanarak 647 izleme bayrağını açabilirsiniz. Bilgi için , bkz.
-
Aşağıdaki sorguyu çalıştırabilirsiniz (lütfen> <tablo adını gerçek tablo adınızla değiştirin), belirli tabloyu bir üretim sistemindeki işlemden önce sınamak ve bu sorunun etkisini planlamak için. Sonuç 8.060 değerinden büyükse, tablonuz Bu soruna tabidir. Ayrıca, sütunları bırakıdıysanız, yeniden oluştur seçeneğiyle tabloyu değiştirmeniz gerekir. Tablonun yeniden oluşturulması sorgunun doğru sonuçlar döndürmesini sağlayabilir.
select 1+1+2 + 2 + (case when sum (case when leaf_offset < 0 then 1 else 0 end) > 0 then 2 else 0 end) + ( (count (*) + 7)/8 ) + count (case when leaf_offset < 0 then 1 else null end) * 2 + sum( case when max_length=-1 then 24 else max_length end) from sys.system_internals_partition_columns col join sys.partitions par on col.partition_id = par.partition_id where object_id = object_id ('<table name>') and index_id in (0,1) and partition_number =1
-
Uygulamanız genellikle tabloya yeni sütunlar eklediğinde değişken uzunluklu sütun veya seyrek sütunlar eklemeyi düşünebilirsiniz. Tüm sütunların toplam boyutu 8.060 bayttan uzun olmasına rağmen, yalnızca meta veri işlemi.
Durum
Microsoft bu sorunun "Uygulandığı öğe" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.