Simptomai
Tarkime, kad turite lentelę, kurioje yra didžiulis objektas (LOB) stulpelis "Microsoft SQL Server" 2008, "SQL Server 2008 R2", "SQL Server 2012" arba "SQL Server" 2014. Kai atnaujinate LOB stulpelį su mažesniu LOB duomenų dydžiu ir pabandykite susigrąžinti nepanaudotą vietą naudodami šiuos būdus:
-
DBCC SHRINKDATABASE/DBCC SHRINKFILE
-
PAKEISTI INDEKSO REORGANIZAVIMAS NAUDOJANT (LOB_COMPACTION = ON)
Tokiu atveju neišnaudotos vietos negalima atlaisvinti.
Sprendimas
Problema pirmą kartą buvo išspręsta šį kaupiamąjį naujinimą SQL serverio.
Kaupiamasis naujinimas 2 SQL serverio 2012 SP2 /en-us/help/2983175
Kaupiamasis naujinimas 11 SQL serverio 2012 SP1 /en-us/help/2975396
Kaupiamasis naujinimas 13 SQL serverio 2008 R2 SP2 /en-us/help/2967540
Kaupiamasis naujinimas 2 SQL serverio 2014 /en-us/help/2967546
Kaupiamasis naujinimas 17 SQL serverio 2008 SP3 /en-us/help/2958696
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Peržiūrėkite naujausius kaupiamuosius SQL serverio naujinimus:
-
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server" 2012 SP2
-
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server" 2012 SP1
-
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server" 2008 R2 SP2
-
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server 2014"
-
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server" 2008 SP3
Sprendimas
Norėdami išspręsti šią problemą, naudokite šiuos sprendimo būdus:
-
Eksportuokite visas eilutes į naują lentelę ir perkelkite eilutes atgal. Taip pertvarkomi LOB duomenys ir Atlaisvinkite nenaudojamą vietą.
-
Naudokite DBCC SHRINKFILE su parinktimi EMPTYFILE, kad perkeltumėte visus duomenis į naujai įtrauktą duomenų failą, tada pašalinkite seną duomenų failą. Taip pertvarkomi LOB duomenys, atleidus nenaudojamą vietą.
Daugiau informacijos
Toliau pateiktame pavyzdyje jums nenaudojamą vietą galite naudoti su "SQL" komanda sp_spaceused "table_name" prieš NAUJINDAMI LOB stulpelį su mažesniu LOB duomenų dydžiu: prieš naujindami:
vardas, pavadinimas |
eilučių |
rezervuotieji |
duomenų |
index_size |
nepanaudotų |
table_name |
1000 |
261072 KB |
261056 KB |
16 KB |
0 KB |
Atnaujinus:
vardas, pavadinimas |
eilučių |
rezervuotieji |
duomenų |
index_size |
nepanaudotų |
table_name |
1000 |
261072 KB |
199672 KB |
16 KB |
61384 KB |
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.