KB2967240 – KORJAUS: Käyttämätöntä tilaa ei voi vapauttaa käyttämällä kutistustoimintoa taulukossa, joka sisältää toimialakohtaisen sarakkeen SQL Server

Käytetään kohteeseen
SQL Server 2008 Service Pack 3 SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2008 R2 Service Pack 2 SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Ongelman ilmenemistapa

Oletetaan, että sinulla on taulukko, joka sisältää suuren objektin (LOB) sarakkeen Microsoft SQL Server 2008:ssa, SQL Server 2008 R2:ssa, SQL Server 2012:ssa tai SQL Server 2014:ssä. Kun päivität LOB-saraketta pienillä LOB-tiedoilla ja yrität vapauttaa käyttämätöntä tilaa seuraavasti:

  • DBCC SHRINKDATABASE / DBCC SHRINKFILE
  • ALTER INDEX REORGANIZE FUNKTIOLLA (LOB_COMPACTION = ON)

Tässä tapauksessa käyttämätöntä tilaa ei voida vapauttaa.

Ratkaisu

Ongelma korjattiin ensimmäisen kerran seuraavassa SQL Server kumulatiivisessa päivityksessä.

SQL Server 2012 SP2:n kumulatiivinen päivitys 2 /en-us/help/2983175

SQL Server 2012 SP1:n kumulatiivinen päivitys 11 /en-us/help/2975396

Kumulatiivinen päivitys 13, SQL Server 2008 R2 SP2 /en-us/help/2967540

SQL Server 2014:n kumulatiivinen päivitys 2 /en-us/help/2967546

Kumulatiivinen päivitys 17, SQL Server 2008 SP3 /en-us/help/2958696

Tietoja SQL Serverin kumulatiivisista päivityksistä

Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Tutustu SQL Serverin uusimpiin kumulatiivisiin päivityksiin:

      

Vaihtoehtoinen menetelmä

Voit kiertää ongelman käyttämällä seuraavia vaihtoehtoisia menetelmiä:

  • Vie kaikki rivit uuteen taulukkoon ja siirrä rivit takaisin. Näin LOB-tiedot järjestetään uudelleen ja vapauttaa käyttämätöntä tilaa.
  • Käytä DBCC SHRINKFILE with EMPTYFILE -vaihtoehtoa, jos haluat siirtää kaikki tiedot juuri lisättyyn datatiedostoon ja poistaa sitten vanhan datatiedoston. Näin LOB-tiedot järjestetään uudelleen vapauttamalla käyttämätöntä tilaa.

Lisätietoja

Seuraavassa esimerkissä näet käyttämättömän tilan TSQL-komennon sp_spaceused table_name avulla ennen LOB-sarakkeen päivittämistä pienillä toimialakohtaisilla tiedoilla ja sen jälkeen:
Ennen päivittämistä:

nimi rivit varattu data index_size ei käytössä
table_name 1000 261072 KB 261056 KB 16 kt 0 kt

Päivityksen jälkeen:

nimi rivit varattu data index_size ei käytössä
table_name 1000 261072 KB 199672 KB 16 kt 61384 kt

      

Tila

Microsoft on vahvistanut tämän olevan ongelma niissä Microsoftin tuotteissa, jotka ovat listattuna Koskee seuraavia tuotteita -osiossa.