Prettylib-tuoteratkaisut - Wiki
SQL Server virhe 9002 : The transaction log for database 'xxx' is full
Mikäli tietoja tallennettaessa tai jo ohjelmaa käynnistettäessä kohtaat seuraavan virheilmoituksen:
9002 : The transaction log for database 'PrettyLib' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
Toimenpide 1:
Älä yritä tallentaa tietoja ennen kuin ongelma on selvitetty.
Virheen syy
Virheilmoitus johtuu siitä, että tietokannan varsinaiset tiedot sisältävän data-tiedoston lisäksi SQL Server pitää yllä ns. tapahtumalokia (transaction log). Tähän lokitiedostoon tallennetaan kaikki tietokannassa tapahtuvat muutokset kunnes se erityisesti tyhjennetään.
Tapahtumalokin tyhjentäminen tapahtuu yleensä automaattisesti varmuuskopioinnin yhteydessä. Mikäli jokin estää tapahtumalokin tyhjentämisen voi se kasvaa yli sille sallitun rajan. Sallittu raja riippuu asetuksista.
Normaalisti tietokannan transaction lokin koko on muotoa "autogrowth", jolloin se kasvaa itsestään. Mikäli tietokannalle on annettu ns. "max size" ja se koko saavutetaan, tapahtuu artikkelin yläosassa oleva virhe.
Selvitä, onko lokitiedosto oikeasti saavuttanut maksimikokonsa, vai onko kyse jostain muusta.
Tapoja selvittää virhettä
Voit suorittaa mm. seuraavan SQL-komennon, jolla saa selville kaikkien palvelimen tietokantojen lokien koon:
DBCC SQLPERF(LOGSPACE)
Voit myös toimia virheilmoituksen ehdottamalla tavalla ja kysyä tietokantapalvelimelta syytä login kutistumisen estymiseen. Alla oleva kysely kertoo joitakin syitä. Esimerkissä tietokannan nimi "prettylib", muuta tarvittaessa.
select log_reuse_wait, log_reuse_wait_desc FROM sys.databases WHERE name = 'PrettyLib'