Belirtiler
Microsoft SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 veya SQL Server 2014 ' te büyük nesne (LOB) sütunu içeren bir tablonuz olduğunu varsayalım. LOB sütununu daha küçük olan LOB verilerinden güncelleştirdiğinizde ve aşağıdaki yöntemleri kullanarak kullanılmayan alanı geri almaya çalıştığınızda:
-
DBCC SHRıNKDATABASE/DBCC SHRıNKFıLE
-
ALTER ıNDEX (LOB_COMPACTION = ON) ILE YENIDEN DÜZENLEME
Bu durumda, kullanılmayan alan geri kazanılamıyor.
Çözüm
Sorun ilk olarak SQL Server 'ın aşağıdaki toplu güncelleştirmesinde giderilmiştir.
SQL Server 2012 SP2 için toplu güncelleştirme 2 /en-us/help/2983175
SQL Server 2012 SP1 için toplu güncelleştirme 11 /en-us/help/2975396
SQL Server 2008 R2 SP2 için toplu güncelleştirme 13 /en-us/help/2967540
SQL Server 2014 için toplu güncelleştirme 2 /en-us/help/2967546
SQL Server 2008 SP3 için toplu güncelleştirme 17 /en-us/help/2958696
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:
Geçici Çözüm
Bu soruna geçici bir çözüm için aşağıdaki geçici çözümleri kullanın:
-
Tüm satırları yeni bir tabloya aktarın ve satırları geri hareket ettirin. Bu, LOB verilerini yeniden düzenler ve kullanılmayan alanı serbest bırakın.
-
Tüm verileri yeni ekli bir veri dosyasına taşımak ve eski veri dosyasını kaldırmak için EMPTYFıLE seçeneğiyle DBCC SHRINKFILE kullanın. Bu, LOB verilerini, kullanılmayan alanı serbest bırakarak yeniden düzenler.
Ek Bilgi
Aşağıdaki örnekte, TSQL komutu sp_spaceused ' table_name ' kullanarak, lob sütununu daha küçük olan lob verilerinden güncelleştirmeden önce
Adlandır |
'dan |
korumalı |
verisini |
index_size |
kullanılmayan |
table_name |
1000 |
261072 KB |
261056 KB |
16 KB |
0 KB |
:
Adlandır |
'dan |
korumalı |
verisini |
index_size |
kullanılmayan |
table_name |
1000 |
261072 KB |
199672 KB |
16 KB |
61384 KB |
Durum
Microsoft bu sorunun "Uygulandığı öğe" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.