Kaip sumažinti žurnalo failą sql. Duomenų bazės arba SQL žurnalo dydžio sumažinimas

Išsamios informacijos Kategorija: MS SQL Paskelbta 2015-05-16

Vykdydama operaciją DBVS įrašo savo veiksmus į žurnalo failą, kad įvykus klaidai būtų grąžinta į pradinė būsena. Ir kartais šis failas išauga iki LABAI didelio dydžio, o dydis nepriklauso nuo pačios duomenų bazės dydžio.

Pavyzdžiui, dabar susiduriu su kietojo disko vietos trūkumo problema. Pradėjau aiškintis: Base 1C Sary and Personal Management 3.0 yra 500 MB dydžio, kuriame 2 kartus per mėnesį dirba 2 kompiuteriai, turi 398 GB talpos žurnalo failą (tiesiog pritrūko vietos kietajame diske).

Na, mes turime sumažinti šį failą. Geriausia tai daryti reguliariai per „Paslaugų planus“, bet dabar parodysiu, kaip tai padaryti rankiniu būdu.

SQL leidžia atlaisvinti OS vietos tik tą, kurios atsarginė kopija buvo sukurta anksčiau, todėl pirmiausia turite sukurti atsarginę operacijų žurnalo kopiją.

1. Pasirinkite bazę. Dešiniuoju pelės mygtuku spustelėkite. Eikite į užduočių skyrių -> sukurkite atsarginę kopiją.

2. Pasirinkite tipą atsarginė kopija„Sandorių žurnalas“. nurodykite, kur išsaugoti, ir spustelėkite gerai.

Tą patį galima padaryti naudojant scenarijų:

ATSARGINĖS KOPĖJIMO ŽURNALAS [Duomenų bazės pavadinimas] Į DISKĄ = N"kelias į atsarginę failą" SU NOFORMAT, NOINIT, NAME = N"duomenų bazės pavadinimas-operacijų žurnalas Atsarginė kopija“, SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO

Baigę procesą, galite pereiti tiesiai prie suspaudimo.

1. Eikite į užduočių meniu punktą -> suspausti -> failai

2. Pasirinkite failo tipą „Žurnalas“. Atkreipkite dėmesį į lauką „Galima“. laisva vieta“ – turėtų būti beveik 100 % žurnalo failo.

3. Spustelėkite gerai

Tas pats ir su scenarijumi

NAUDOTI [duomenų bazės pavadinimas] GO DBCC SHRINKFILE (N"žurnalo failo pavadinimas", 0, TIK TRUNCATE) GO

Visi matome, kad žurnalo failas sumažėjo iki minimalios vertės.

Viskas būtų gerai, bet ši klaida pasirodo periodiškai

Žurnalo failo 2() nepavyko suglaudinti, nes naudojami visi loginiai žurnalo failai, esantys failo pabaigoje.

Išbandžiau įvairias parinktis, bet galiausiai šis scenarijus man padėjo:

USE duomenų bazės pavadinimas; GO – sutrumpinkite žurnalą pakeisdami duomenų bazės atkūrimo modelį į PAPRASTAS. ALTER DATABASE duomenų bazės pavadinimą SET RECOVERY SIMPLE; GO – Sumažinkite sutrumpintą žurnalo failą iki 1 MB. DBCC SHRINKFILE (žurnalo failo pavadinimas, 1); GO – iš naujo nustatykite duomenų bazės atkūrimo modelį. PAKEISTI DUOMENŲ BAZĖS duomenų bazės pavadinimą SET RECOVERY FULL; EIK

Bet koks programinė įranga atlieka tam tikras funkcijas. Nepriklausomai nuo to, kaip tai daroma, pagal numatytuosius nustatymus aplanke su programa sukuriamas žurnalo failas. Šis failas yra tekstinis dokumentas, kuriame rodomi visi programos veiksmai.

Jums reikės

  • Programinė įranga:
  • - bet koks teksto redaktorius;
  • - 7Zip archyvatorius.

Instrukcijos

  • Kai kuriais atvejais reikia išsiaiškinti, kaip elgėsi veikiantis procesas prieš užstojo arba dėl kokių priežasčių programa buvo uždaryta. Jei žiūrite į Linux sistemas, šį veiksmą galima atlikti nežiūrint žurnalo failo (jei jis paleistas per terminalą arba konsolę). IN Operacinės sistemos Windows šeima sukuriami žurnalai arba į sistemos žurnalą įtraukiamas įrašas.
  • Jei dirbate su trečiosios šalies programa, tokie failai turėtų būti kataloge su programa. Eikite į norimą katalogą naudodami " „Windows Explorer“.“ Jei numatyto dokumento jūs nematote, jam priskiriamas atributas „Paslėptas“. Įgalinti paslėptų ir sistemos failų rodymą.
  • IN atidarytas langas Spustelėkite viršutinį meniu „Įrankiai“, pasirinkite „Aplanko parinktys“. Eikite į skirtuką „Rodinys“ ir sąraše raskite eilutę „Slėpti apsaugotą sistemą...“. Panaikinkite žymėjimą ir spustelėkite mygtukus Taikyti ir Gerai. Dabar galite rasti žurnalo failą ir jį peržiūrėti. Norėdami tai padaryti, dukart spustelėkite jį kairiuoju pelės mygtuku arba pasirinkite iš kontekstinis meniu„Atidaryti“ elementą.
  • Radę klaidą, kurios ieškote, galite padaryti išvadą supratę, kodėl procesas stringa. Jei žurnalo failas per didelis arba jį reikia peržiūrėti profesionaliai, rekomenduojama jį sumažinti ir nusiųsti specialistui paštu arba per vidinį tinklą.
  • Suspaudimui rekomenduojame naudoti nemokamą 7Zip programinę įrangą. Šią priemonę galite atsisiųsti iš šios nuorodos http://7-zip.org. Paleiskite programą. Atidarytame naršyklės lange eikite į savo failą, pasirinkite jį ir spustelėkite mygtuką Pridėti su žalia pliuso piktograma.
  • Dialogo lange pasirinkite archyvo tipą, pavyzdžiui, zip arba rar. Norėdami pradėti archyvo kūrimo procesą, paspauskite Enter mygtuką. Kai operacija bus baigta, langas užsidarys. Tame pačiame aplanke matysite suglaudintą žurnalo failą, kurį galėsite nusiųsti specialistui.
  • Po tam tikrų manipuliacijų su duomenų baze susidaro situacijos, kai jos failų dydis viršija protingas ribas (arba, kaip man, dvigubai daugiau nei reikia 103 GB vietoj 65 GB, ir tai tik duomenų bazės failas). Šią situaciją galima išspręsti paprastu susitraukimu.

    Žemiau pateiktos kodo parinktys yra gana paprastos:

    • DBCC susitraukimo duomenų bazė (N'duomenų bazės_pavadinimas', TRUNCATE_ONLY); - visos duomenų bazės sutrumpinimas
    • naudoti [duomenų bazės_pavadinimas] DBCC SHRINKFILE (N'duomenų bazės_pavadinimas', 101);— tik duomenų failo sutrumpinimas iki 101 MB
    • naudoti [duomenų bazės_pavadinimas] DBCC SHRINKFILE (N'duomenų bazės_pavadinimo_žurnalas', 0);— operacijos failo sutrumpinimas tik iki 0 MB

    Tačiau atliekant šią operaciją gali kilti problemų. Jie daugiausia atsiranda tose duomenų bazėse, kuriose yra įdiegtas Visas archyvavimo modelis (paprastam modeliui problemų, kaip taisyklė, nekyla; paaiškinsime kodėl vėliau). Klaidų pranešimuose rašoma, kad žurnalo failas naudojamas, todėl operacijos atlikti negalima – tai daugiau nei stebina, nes dažniausiai susitraukimo procesas vyksta tada, kai vartotojai baigia darbą (niekas neprisijungia prie duomenų bazės). Ryšio monitorius taip pat rodo, kad nėra jokios veiklos.


    Prieš atlikdami duomenų bazės mažinimą, turite archyvuoti, bet ne visą duomenų bazę, ty operacijos failą. Tik atlikę šią procedūrą galite saugiai vykdyti susitraukimo komandą, o rezultatas bus pasiektas. Reikia pasakyti, kad archyvavimo procedūra reikalinga tik tada, kai duomenų bazėje įdiegtas Full archyvavimo modelis. Paprastame modelyje žurnalo failas automatiškai pažymimas kaip laisvas naudoti, o komanda shrink veikia be problemų; Full modelyje failas tampa laisvas naudoti tik padarius atitinkamo failo atsarginę kopiją.

    Iš viso, kad būtų sumažintas duomenų bazės failų dydis SQL 2005 turi tokį kodą:

    Naudokite duomenų bazės pavadinimą
    ATSARGINĖS KOPĖJIMO Žurnalas[Duomenų bazės pavadinimas] WITH TRUNCATE_ONLY
    DBCC SHRINKFILE („FileNameBoolean“)

    Ta pati operacija skirta SQL 2008 atrodys kitaip. Kadangi komandai BACKUP nėra tokio rakto kaip TRUNCATE_ONLY, galite naudoti laikiną duomenų bazės perkėlimą į SIMPLE atsarginės kopijos režimą, sutrumpinti failą ir grįžti į FULL režimą. Žinoma, jei iš pradžių buvo taip:

    NAUDOTI BaseName
    PAKEISTI DUOMENŲ BAZĄDuomenų bazės pavadinimas NUSTATYTI PAPRASTĄ ATKŪRIMĄ
    DBCC SHRINKFILE("FileNameLogical", 10);
    ALTER DATABASEBaseName SET RECOVERY FULL

    Be to, atlikus manipuliacijas, niekada nepakenks patikrinti duomenų bazę. Kaip įprasta, mes perkeliame duomenų bazę į išskirtinį režimą ( Jei turite naudoti REPAIR argumentus, paleiskite DBCC CHECKDB be taisymo parinkties, kad sužinotumėte reikalingo remonto lygį prieš atkurdami)

    Kai prisijungiant prie MS SQL duomenų bazės atsiranda klaidų:

    DBMS klaida:
    Microsoft OLE DB teikėjas SQL serveris: duomenų bazės „ReportServer“ operacijų žurnalas pilnas. Norėdami sužinoti priežastį, kodėl žurnalo vietos negalima naudoti pakartotinai, pažiūrėkite į lentelės stulpelį log_reuse_wait_desc
    sys. duomenų bazės HRESULT=80040E14, SQLStvr: Klaidos būsena=2, Sunkumas=11, gimtoji=9002, eilutė=1
    arba
    DBMS klaida:
    „Microsoft OLE“ teikėjas, skirtas SQL serveriui: duomenų bazės „ReportServer“ operacijų žurnalas pilnas. Norėdami sužinoti, kodėl žurnalo vietos negalima naudoti pakartotinai, žr. log_reuse_wait_desc stulpelį sys.database
    HRESULT=80040E14, SQLSTATE=4 2000, gimtoji=9002

    tai reiškia, kad diske, kuriame yra operacijų žurnalas, pritrūko vietos ir dabar DBVS neturi kur rašyti duomenų apie naujas operacijas. Dažniausiai taip nutinka tada, kai nėra jokių apribojimų žurnalo dydžiui ir MS SQL nėra sukurti atitinkami priežiūros planai.

    Tokiu atveju reikia sumažinti paties operacijos failo (*.ldf) dydį, kitaip tariant, sutraukti (suspausti) žurnalą. Norėdami tai padaryti, galite naudoti užklausą arba rankinį žurnalo glaudinimą.

    Apsvarstykite galimybę suspausti operacijų žurnalą rankiniu būdu:

    1 žingsnis. Nustatykite atkūrimo modelį į Paprastas. Dešiniuoju pelės mygtuku spustelėkite pagrindą - Ypatybės

    Kitas: Parinktys – 4-as elementas iš viršaus Atkūrimo modelis – paprasta – gerai.

    Sumažinkite operacijų žurnalą. Dešiniuoju pelės mygtuku spustelėkite pagrindą - Užduotys – Sutraukti – Failai

    Diegti Failo tipas – Prisijungti – Susitraukti veiksmas – pasirinkite Pertvarkyti puslapius prieš atleidžiant nepanaudotą vietą – Sutraukti failą į
    nurodykite priimtiną rąsto dydį.

    Dalintis