Simptomi
Pieņemsim, ka jums ir tabula, kurā ir liela objekta (LOB) kolonna programmā Microsoft SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 vai SQL Server 2014. Atjauninot LOB kolonnu ar mazāku LOB datu lielumu un mēģināt atgūt neizmantoto vietu, izmantojot šādas metodes:
-
DBCC SHRINKDATABASE/DBCC SHRINKFILE
-
MAINĪT INDEX REORGANIZĒT AR (LOB_COMPACTION = IESLĒGTS)
Šajā situācijā neizmantoto vietu nevar atgūt.
Risinājums
Šī problēma pirmo reizi tika izlabota tālāk sniegtajā SQL Server kumulatīvajā atjauninājumā.
SQL Server 2012 SP2 kumulatīvais atjauninājums 2 /en-us/help/2983175
Kumulatīvais atjauninājums 11 SQL Server 2012 SP1 /en-us/help/2975396
Kumulatīvais atjauninājums 13 SQL Server 2008 R2 SP2 /en-us/help/2967540
Kumulatīvais atjauninājums 2 SQL Server 2014 /en-us/help/2967546
Kumulatīvais atjauninājums 17 SQL Server 2008 SP3 /en-us/help/2958696
Katrā jaunajā kumulatīvajā SQL Server atjauninājumā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Skatiet jaunākos kumulatīvos atjauninājumus SQL Server:
Risinājums
Lai novērstu šo problēmu, izmantojiet tālāk norādītos risinājumus.
-
Eksportējiet visas rindas uz jaunu tabulu un pārvietojiet rindas atpakaļ. Tādējādi tiek pārkārtoti LOB dati un izlaista neizmantotā atstarpe.
-
Izmantojiet DBCC SHRINKFILE ar EMPTYFILE opciju, lai pārvietotu visus datus uz nesen pievienotu datu failu un pēc tam noņemtu veco datu failu. Tādējādi tiek pārkārtoti LOB dati, atlaižot neizmantoto vietu.
Papildinformācija
Tālāk sniegtajā piemērā ir parādīta neizmantotā vieta, izmantojot komandu TSQL sp_spaceused "table_name" pirms un pēc tam, kad esat atjauninājis LOB kolonnu ar mazāku LOB datu lielumu: pirms atjaunināšanas:
vārds |
rindas |
rezervētie |
datu |
index_size |
neizmantotu |
table_name |
1000 |
261072 KB |
261056 KB |
16 KB |
0 KB |
Pēc atjaunināšanas:
vārds |
rindas |
rezervētie |
datu |
index_size |
neizmantotu |
table_name |
1000 |
261072 KB |
199672 KB |
16 KB |
61384 KB |
Statusa
Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".