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'