Simptome
Să presupunem că aveți un tabel care conține o coloană obiect mare (LOB) în Microsoft SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 sau SQL Server 2014. Atunci când actualizați coloana LOB cu o dimensiune mai mică de LOB date și încercați să revendicați spațiul neutilizat utilizând următoarele metode:
-
DBCC SHRINKDATABASE/DBCC SHRINKFILE
-
ALTER INDEX REORGANIZE WITH (LOB_COMPACTION = ACTIVAT)
În această situație, spațiul neutilizat nu poate fi revendicat.
Rezolvare
Problema a fost remediată pentru prima dată în următoarea actualizare cumulativă de SQL Server.
Actualizarea cumulativă 2 pentru SQL Server 2012 SP2 /en-us/help/2983175
Actualizarea cumulativă 11 pentru SQL Server 2012 SP1 /en-us/help/2975396
Actualizarea cumulativă 13 pentru SQL Server 2008 R2 SP2 /en-us/help/2967540
Actualizarea cumulativă 2 pentru SQL Server 2014 /en-us/help/2967546
Actualizarea cumulativă 17 pentru SQL Server 2008 SP3 /en-us/help/2958696
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
-
Cea mai recentă actualizare cumulativă pentru SQL Server 2012 SP2
-
Cea mai recentă actualizare cumulativă pentru SQL Server 2012 SP1
-
Cea mai recentă actualizare cumulativă pentru SQL Server 2008 R2 SP2
-
Cea mai recentă actualizare cumulativă pentru SQL Server 2014
-
Cea mai recentă actualizare cumulativă pentru SQL Server 2008 SP3
Soluție de evitare
Pentru a rezolva această problemă, utilizați următoarele soluții:
-
Exportați toate rândurile într-un tabel nou și mutați rândurile înapoi. Acest lucru reorganizează datele LOB și eliberează spațiul neutilizat.
-
Utilizați DBCC SHRINKFILE cu opțiunea EMPTYFILE pentru a muta toate datele într-un fișier de date nou adăugat, apoi eliminați fișierul de date vechi. Acest lucru reorganizează datele LOB acolo, eliberând spațiul neutilizat.
Mai multe informații
Următorul exemplu vă arată spațiul neutilizat utilizând comanda TSQL sp_spaceused ' table_name ' înainte și după ce actualizați coloana lob cu o dimensiune mai mică de date LOB: înainte de a actualiza:
nume |
rânduri |
rezervate |
date |
index_size |
neutilizate |
table_name |
1000 |
261072 KB |
261056 KB |
16 KO |
0 KO |
După ce actualizați:
nume |
rânduri |
rezervate |
date |
index_size |
neutilizate |
table_name |
1000 |
261072 KB |
199672 KB |
16 KO |
61384 KO |
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.