Šiuo metu esate neprisijungę, laukiama, kol iš naujo prisijungsite prie interneto

Kaip susitraukia tempdb duomenų bazės į SQL serverio

SVARBU: šis straipsnis išverstas naudojant „Microsoft“ mašininio vertimo programinę įrangą ir gali būti pataisytas naudojant „Community Translation Framework“ (CTF) technologiją. „Microsoft“ siūlo mašinos išverstus ir po to bendruomenės suredaguotus straipsnius, taip pat žmogaus išverstus straipsnius siekdama suteikti prieigą prie visų savo žinių bazės straipsnių daugeliu kalbų. Mašinos išverstuose ir vėliau paredaguotuose straipsniuose gali būti žodyno, sintaksės ir / arba gramatikos klaidų. „Microsoft“ neatsako už jokius netikslumus, klaidas arba žalą, patirtą dėl neteisingo turinio vertimo arba mūsų klientų naudojimosi juo. Daugiau apie CTF žr. http://support.microsoft.com/gp/machine-translation-corrections.

Spustelėkite čia, norėdami pamatyti šio straipsnio versiją anglų kalba: 307487
Santrauka
Šiame straipsnyje aptariami trys būdai, kuriuos galite naudoti trauktis tempdb duomenų bazės dydžiu, yra mažesnis už savo paskutinį sukonfigūruotas dydį. Pirmasis metodas leidžia jums visiškai kontroliuoti, tempdb failų dydį. Tačiau Pirmasis metodas reikia paleisti iš naujo Microsoft SQL Server. Antrasis metodas sumažina tempdb duomenų bazėje, ir jums gali tekti iš naujo paleisti SQL serverio. Trečias būdas leidžia sutraukti atskirus failustempdb duomenų bazėje. Paskutiniai du metodai reikalauja, kad jokia veikla gali pasitaikyti tempdb duomenų bazės sutraukimo operacija.

Pastaba.Jei naudojate SQL Server 2005, taip pat taikomi šie metodai. Tačiau, turėtumėte naudoti SQL Server Management Studio vietoj Enterprise Manager ir Query Analyzer atlikti šias operacijas. Taip pat Žinokite, kad SQL Server Management Studio ir SQL Server 2005 nerodo reikiamo dydžiotempdbfailų po sutraukimo operacija. "Šiuo metu paskirtas vietos" vertė visada yra paimta iš sys.master_files DMV, ir ši vertė nėra atnaujinama po sutraukimo operacijatempdb duomenų bazės. Ieškodama reikiamo dydžio tempdb failų po sutraukimo operacija, SQL Server Management Studio vykdyti tokį pareiškimą:
use tempdbselect (size*8) as FileSizeKB from sys.database_files

Pastaba.SQL Server 2008 yra ne susiduria su problema, kad neteisingastempdbfailų dydį rodoma po sutraukimo operacija.

Tempdb informacija

Tempdb yra laikiną darbo sritį. Tarp kitų reikmėms, SQL serveris naudoja tempdb už šiuos veiksmus:
  • Saugojimo aiškiai sukurtą laikinų lentelių
  • Darbo stalai, kad surengti tarpiniai rezultatai sukurta per užklausos apdorojimas ir rūšiavimas
  • Įvykio statinis teksto žymekliai
SQL serverio įrašo tik pakankamai informacijos į tempdboperacijų žurnalą atšaukti operaciją, o ne perdaryti operacijos metu duomenų bazės panaudojimo. Ši priemonė didina įrašyti atskaitomybėje,tempdbatlikti. Be to, jūs neturite prisijungti informaciją pakartoti kiekvieną sandorį, nes tempdb vėl sukuriama kiekvieną kartą paleidus SQL serverio. Todėl ji neturi jokios operacijos riedėti į priekį arba sueities. Paleidus SQL Server, tempdb iš naujo sukurtas naudojant modelio duomenų bazės kopiją, ir tempdb bus atkurti jo paskutinis sukonfigūruotas dydį.

Pagal numatytuosius nustatymus, tempdb duomenų bazės yra sukonfigūruotas išaugti kiek reikia. Todėl šios duomenų bazės gali augti laiku dydžio didesnis už norimo dydžio. Paprastas iš naujo paleisti SQL serverio pakeičia dydį, tempdb iki paskutinio sukonfigūruotas dydžio. Sukonfigūruotas dydis pastaruosius aiškiai dydis, kurį buvo nustatytas naudojant failo dydžio keitimas naudojant pvz. keisti duomenų bazę, kuri naudoja parinktį Keisti failo arba DBCC SHRINKFILE užrašas.

Galite naudoti šių trijų metodų trauktistempdbdydžiu, yra mažesnis už jos sukonfigūruotas dydį.

1 Metodas: Naudoti Transact-SQL komandas
Pastaba. Šį metodą reikia iš naujo paleisti SQL serverio.

  1. Sustabdyti SQL serverio. Komandų eilutėje įveskite šią komandą, kad paleisti SQL serverio:
    sqlservr - c -f
    Į -c ir -fparametrų sukelti SQL serveryje paleisti minimumas rankos režimu, turi daugtempdb, 1 MB duomenų failo ir 0,5 MB žurnalo failo.

    Pastaba. Jei naudojate SQL serverio egzemplioriaus, turite pakeisti į reikiamą aplanką (programa Files\Microsoft SQL Server\MSSQL$ instancijos name\Binn) ir naudoti, -s perjungti (-s % instance_name %).
  2. Prisijungti prie SQL serverio naudojant Query Analyzer, o tada vykdykite šias Transact-SQL komandas:
       ALTER DATABASE tempdb MODIFY FILE   (NAME = 'tempdev', SIZE = target_size_in_MB)    --Desired target size for the data file   ALTER DATABASE tempdb MODIFY FILE   (NAME = 'templog', SIZE = target_size_in_MB)   --Desired target size for the log file					
  3. Sustabdyti SQL serverio. Norėdami tai padaryti, paspauskite Ctrl + C komandinės eilutės langą, iš naujo paleisti SQL serverio paslaugą ir patikrinkite, ar Tempdb.mdf ir Templog.ldf failų dydį.
Šio metodo apribojimą sudaro tai, kad jis tik veikia numatytasis tempdb loginis failus: tempdev ir templog. Jei daugiau failų yra įtrauktas įtempdb, galite sumažinti juos paleidus SQL serverio paslaugos. Visi tempdb failai yra sukurti iš naujo paleisties metu. Tačiau, jie yra tuščias ir gali būti pašalintas. Pašalinti papildomus failus tempdb, naudokite komandą keisti duomenų bazę naudojant parinktį pašalinti FAILĄ.

2 Metodas: Naudokite DBCC SHRINKDATABASE komandą
Naudoti DBCC SHRINKDATABASE komandą trauktis tempdb duomenų bazės. DBCC SHRINKDATABASE gauna parametrą target_percent. Tai norimą procentinę dalį laisvos vietos liko duomenų bazės failo po duomenų bazės nebus sutraukta. Naudojant DBCC SHRINKDATABASE, gali reikėti iš naujo paleisti SQL serverio.

Svarbu. Jei vykdote DBCC SHRINKDATABASE, jokia kita veikla gali būti įvykę su tempdb duomenų baze. Norėdami įsitikinti, kad kitų procesų negalima naudoti tempdb o DBCC SHRINKDATABASE yra paleisti, turite paleisti SQL serverio vieno vartotojo režime. Norėdami gauti daugiau informacijos, ieškokite "Poveikio vykdymo DBCC SHRINKDATABASE ar DBCCSHRINKFILE o tempdb yra naudojamas" skyriuje.
  1. Nustatyti erdvė, kuri šiuo metu naudojamas tempdb naudojant sp_spaceused saugomi procedūrą. Tada apskaičiuojama procentinė dalis laisvos vietos, kad liko kaip parametras DBCC SHRINKDATABASE. Šis skaičiavimas remiasi norimą duomenų bazės dydį.

    Pastaba. Kai kuriais atvejais, jums gali tekti vykdyti sp_spaceused @updateusage = true perskaičiuoti erdvė, kuri yra naudojama ir patvirtinta atnaujinta ataskaita. Kreiptis į SQL serverio knygos internete daugiau informacijos apie sp_spaceused saugomi procedūrą.

    Apsvarstykite šį pavyzdį:
    Manyti, kad tempdb turi du failus: pirminių duomenų failas (Tempdb.mdf), kuris yra 100 MB ir žurnalo failas (Tempdb.ldf), kuris yra 30 MB. Tarkime, kad sp_spaceusedpraneša, kad pirminių duomenų faile yra 60 MB duomenų. Taip pat tarkime, kad norite sutraukti pirminio duomenų failo iki 80 MB. Apskaičiuoti norimą procentą laisvos vietos po sutraukti: 80 MB-60 MB = 20 MB. Dabar, padalinti 20 MB 80 MB = 25 procentų ir tai yra jūsųtarget_percent. Operacijų žurnalo failą yra atitinkamai sumažėjo, 25 procentų ar 20 MB vietos kainuoja po duomenų bazės nebus sutraukta.
  2. Prisijungti prie SQL serverio naudojant Query Analyzer, o tada vykdykite šias Transact-SQL komandas:
       dbcc shrinkdatabase (tempdb, 'target percent')    -- This command shrinks the tempdb database					
Yra naudojimo apribojimai DBCC SHRINKDATABASE komandą tempdb duomenų bazėje. Tikslinės dydis duomenų ir žurnalo failams negali būti mažesnis nei tą dydį, kuris yra kada duomenų bazėje buvo sukurtas arba mažesnis už paskutinį dydis, kurį buvo aiškiai nustatyti naudodami failų dydį keičiasi veiklos pvz., keisti duomenų bazę, kuri naudoja parinktį Keisti failo arba komandą DBCC SHRINKFILE. Dar vienas apribojimas DBCC SHRINKDATABASE yra parametrą target_percentage ir jo priklausomybę nuo dabartinės vietos naudojama skaičiuojant.

3 Metodas: Naudokite komandą DBCC SHRINKFILE
Naudokite komandą DBCC SHRINKFILE trauktis atskirųtempdb failus. DBCC SHRINKFILE suteikia daugiau lankstumo nei DBCC SHRINKDATABASE, nes jūs galite naudoti ją vieną duomenų bazę faile nepaveikiant kitų failų, kurie priklauso tą pačią duomenų bazę. DBCC SHRINKFILE gauna planuojamas parametras, ir tai yra norimas galutinis duomenų bazės failo dydis.

Svarbu. Nors jokia kita veikla vyksta tempdb duomenų bazėje, privalote DBCC SHRINKFILE komandą. Norėdami įsitikinti, kad kitų procesų negalima naudoti tempdb o DBCC SHRINKFILE vykdo, privalote paleisti SQL serverio vieno vartotojo režime. Daugiau informacijos apie DBCC SHRINKFILE, ieškokite "Poveikio vykdymo DBCC SHRINKDATABASE ar DBCCSHRINKFILE o tempdb yra naudojamas" skyriuje.
  1. Nustatyti norimo dydžio pirminio duomenų failo (tempdb.mdf), žurnalo failas (templog.ldf), ir papildomoms rinkmenoms, kurias dedama į tempdb. Įsitikinkite, kad erdvė, kuri yra naudojami failai yra mažesnis arba lygus verslinės dydį.
  2. Prisijungti prie SQL serverio naudojant Query Analyzer, o tada vykdykite šias Transact-SQL komandas dėl konkrečios duomenų bazės failus, kuriuos norite sutraukti:
       use tempdb   go   dbcc shrinkfile (tempdev, 'target size in MB')   go   -- this command shrinks the primary data file   dbcc shrinkfile (templog, 'target size in MB')   go   -- this command shrinks the log file, examine the last paragraph.						
DBCC SHRINKFILE privalumas yra kad ji gali sumažinti failo dydį dydžiu, yra mažesnė nei savo pradinio dydžio. Galite išduoti DBCC SHRINKFILE bet kurį duomenų ar žurnalo failai. DBCC SHRINKFILE apribojimu yra, kad negalima kurti duomenų bazės modelio duomenų bazės dydį yra mažesni.

SQL Server 7.0 operacijų žurnale trauktis – atidėtųjų operacija, ir turite išrašyti žurnalo Apipjaustymas ir padėti sutraukimo operacija duomenų bazės atsarginę kopiją. Pagal numatytuosius nustatymus, tempdb gali trunc įeiti chkpt nustatytas į ON. Todėl, jūs neturite išleisti žurnalo nukirtimo tos duomenų bazės.

Norėdami gauti daugiau informacijos apie tai, kaip trauktis duomenų bazės operacijų žurnale SQL Server 7.0, spustelėkite straipsnis peržiūrėkite straipsnį Microsoft žinių bazėje:
256650 INF: Kaip trauktis SQL Server 7.0 operacijų žurnalą

Poveikio vykdymas DBCC SHRINKDATABASE ar DBCCSHRINKFILE o tempdb yra naudojamas

Jei tempdb yra naudojama, ir bandote sutraukti naudojant DBCC SHRINKDATABASE arba DBCC SHRINKFILE komandas, galite gauti daug konsistencijos klaidų, panašūs į šiuos, ir sutraukimo operacija gali nepavykti:
  • Serveris: Msg 2501, Level 16, 1 valstybės, linijos 1Could rasti stalo pavadino "1525580473". Patikrinti sysobjects.
  • Serveris: Msg 8909, dydis 16, 1 valstybės, linijos 0Table sugadinta: objekto ID 1, indekso ID yra 0, puslapio ID % S_PGID. Į puslapio antraštę PageId = % S_PGID.
Nors klaidos 2501 nebþtinai bet kokia korupcija tempdb, ši klaida sukelia sutraukimo operacija nepavyks. Kita vertus, klaida 8909 gali reikšti korupcijostempdb duomenų bazėje. Iš naujo paleisti SQL serveris iš naujo sukurti tempdb ir išvalyti nuoseklumo klaidomis. Tačiau Turėkite omenyje, kad gali būti kitų priežasčių fizinių duomenų korupcija klaidos, kaip klaidos 8909, ir tie įtraukti įvesties/išvesties posistemio problemų.

NUORODOS

SQL serverio knygos internete; temos: "DBCC SHRINKFILE"; "DBCC SHRINKDATABASE"

Įspėjimas: šis straipsnis išverstas automatiškai

Savybės

Straipsnio ID: 307487 – Paskutinė peržiūra: 10/10/2013 06:37:00 – Peržiūra: 2.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 64-bit Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL 2005 Server Workgroup

  • kbsqlsetup kbhowtomaster kbmt KB307487 KbMtlt
Atsiliepimai
or="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">