Symptomen
We gaan ervan uit dat u een tabel hebt die een kolom van grote objecten (LOB) bevat in Microsoft SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 of SQL Server 2014. Wanneer u de LOB-kolom bijwerkt met een kleinere grootte van LOB-gegevens en probeert u de ongebruikte ruimte opnieuw te claimen met behulp van de volgende methoden:
-
DBCC SHRINKDATABASE/DBCC SHRINKFILE
-
OPNIEUW ORDENEN VAN INDEXEN WIJZIGEN MET (LOB_COMPACTION = AAN)
In dit geval kunt u de ongebruikte ruimte niet opnieuw claimen.
Oplossing
Het probleem is voor het eerst opgelost in de volgende cumulatieve update van SQL Server.
Cumulatieve update 2 voor SQL Server 2012 SP2 /en-us/help/2983175
Cumulatieve update 11 voor SQL Server 2012 SP1 /en-us/help/2975396
Cumulatieve update 13 voor SQL Server 2008 R2 SP2 /en-us/help/2967540
Cumulatieve update 2 voor SQL Server 2014 /en-us/help/2967546
Cumulatieve update van 17 voor SQL Server 2008 SP3 /en-us/help/2958696
Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige cumulatieve update. Bekijk de nieuwste cumulatieve updates voor SQL Server:
Tijdelijke oplossing
Gebruik de volgende tijdelijke oplossingen om dit probleem tijdelijk op te lossen:
-
Exporteer alle rijen naar een nieuwe tabel en verplaats de rijen terug. Hierdoor worden de LOB-gegevens opnieuw geordend en de ongebruikte ruimte vrijgegeven.
-
Gebruik DBCC SHRINKFILE met EMPTYFILE optie om alle gegevens te verplaatsen naar een nieuw toegevoegd gegevensbestand en verwijder vervolgens het oude gegevensbestand. Hierdoor worden de LOB-gegevens opnieuw ingedeeld door de ongebruikte ruimte vrij te maken.
Meer informatie
In het volgende voorbeeld ziet u de ongebruikte ruimte met behulp van de opdracht TSQL sp_spaceused ' table_name ' voor en na het bijwerken van de LOB-kolom met kleinere grote gegevens: voordat u de gegevens bijwerkt.
padnaam |
Rows |
gereserveerde |
records |
index_size |
vrij |
table_name |
1000 |
261072 KB |
261056 KB |
16 KB |
0 KB |
Na de update:
padnaam |
Rows |
gereserveerde |
records |
index_size |
vrij |
table_name |
1000 |
261072 KB |
199672 KB |
16 KB |
61384 Knowledge |
Status
Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.