Gå til innhold

Slette transaction log mssql server


Anbefalte innlegg

Skrevet

Kjapt spørsmål: Kan jeg slette transaction log i databasen, dersom jeg ikke har bruk for disse til noen slags backup eller lignende, eller bør jeg løse det på en annen måte når denne loggen vokser over alle proposjoner?

Videoannonse
Annonse
Skrevet (endret)

Nei. Transaksjonsloggen er helt livsnødvendig for SQL Server. Hvis du ikke vil ta backup av den så kan du sette databasens recovery model til Simple. Da vil transaksjonsloggen i prinsippet kun inneholde informasjon som behøves for rollback/commit og undo/redo informasjon ved recovery når SQL Server startes opp. (les mer i BOL hva dette innebærer).

Endret av kaffenils
Skrevet

Men jeg kan jo sette en maksstørrelse på denne. Hvor stor bør den være? Nå er den på 2.3 GB for en db på 23MB, så det virker litt digert... Nå står den på "File growthg by percent: 10%", som da vil være 10% av hva? og "Maximum file size: Unrestricted"

Skrevet

Ja, du kan sette en maksstørrelse, men når loggen når denne størrelsen og ikke kan utvides mer så kan du heller gjøre endringer i databasen.

 

Grunnen til at den er diger er jo at alle transaksjoner logges. Sett recovery model til Simple, reduser filstørrelsen til f.eks. 50MB og se om den fortsatt vokser i det uendelige.

 

Du kan få en beskrivelse over hva årsaken til at deler (virtuelle log filer, se BOL: virtual logs) i transaksjonsloggen ikke ikke gjenbrukes ved å liste kolonnen log_reuse_wait_desc i viewet sys.databases.

 

Ellers så kan du google DBCC LOGINFO (udokumentert DBCC kommando) for å få detaljert over virtuelle log filer i en fysisk transaksjonslogg.

Skrevet
Så jeg kan sette Maximum file size til f.eks 50MB, selv om filen pr i dag er på 2300MB?

 

Har satt den til Simple i alle fall.

 

Ikke sett maks størrelse. Lag heller en jobb som rutinemessig shrink'er filen til en størrelse du har valg. F.eks. 1Gb.

 

Ved å sette maks størrelse vil du kunne oppleve at databasen din plutselig blir "read-only" på grunn av at transaksjonsloggen er full.

Skrevet
Så jeg kan sette Maximum file size til f.eks 50MB, selv om filen pr i dag er på 2300MB?

 

Har satt den til Simple i alle fall.

 

Ikke sett maks størrelse. Lag heller en jobb som rutinemessig shrink'er filen til en størrelse du har valg. F.eks. 1Gb.

 

Ved å sette maks størrelse vil du kunne oppleve at databasen din plutselig blir "read-only" på grunn av at transaksjonsloggen er full.

Er det en ting du ikke skal gjøre, unntatt i enkelte svært spesielle tilfeller, så er det i hvert fall det du anbefaler her. Man skal IKKE ha en jobb som regelmessig shrinker loggfilen, men snarere sørge for at loggfilen er stor nok og således ikke trenger å vokse, og ei heller krympes. Unntaket vil typisk være tilfeller hvor det loggfilene vokser seg svært store i enkelte "spesielle" tilfeller, som f eks årlig registrering/innlesing av data.

Skrevet
Så jeg kan sette Maximum file size til f.eks 50MB, selv om filen pr i dag er på 2300MB?

 

Har satt den til Simple i alle fall.

 

Ikke sett maks størrelse. Lag heller en jobb som rutinemessig shrink'er filen til en størrelse du har valg. F.eks. 1Gb.

 

Ved å sette maks størrelse vil du kunne oppleve at databasen din plutselig blir "read-only" på grunn av at transaksjonsloggen er full.

Er det en ting du ikke skal gjøre, unntatt i enkelte svært spesielle tilfeller, så er det i hvert fall det du anbefaler her. Man skal IKKE ha en jobb som regelmessig shrinker loggfilen, men snarere sørge for at loggfilen er stor nok og således ikke trenger å vokse, og ei heller krympes. Unntaket vil typisk være tilfeller hvor det loggfilene vokser seg svært store i enkelte "spesielle" tilfeller, som f eks årlig registrering/innlesing av data.

 

Enig i det, men 1GB burde i de fleste tilfeller være stort nok så lenge han bruker Simple Recovery Model :)

Skrevet
Men dere mener altså at bare ved å sette den til Simple, så vil filen holde seg relativt liten?

 

Ja. Men vær klar over at aktive transaksjoner i en virtuell log medfører at denne (den virtuelle loggen) ikke kan gjenbrukes.

 

Vær også klar over at du ikke bør sette for liten "size" og "growth increment" på log filen da dette kan påvirke ytelsen negativt ved at den fysiske log filen da vil endre opp med mange små virtuelle log filer.

 

Fra "Transaction log physical architecture" i BOL:

The only time virtual log files affect system performance is if the log files are defined by small size and growth_increment values. If these log files grow to a large size because of many small increments, they will have lots of virtual log files. This can slow down database startup and also log backup and restore operations. We recommend that you assign log files a size value close to the final size required, and also have a relatively large growth_increment value
Skrevet
Kan jeg uten problemer bruke valget "Auto shrink" under "Options" for databasen?

 

Det vil gå ut over ytelsen både når filene krympes og når de deretter må utvides igjen. Så får du selv bestemme deg for (og teste) om denne ytelsesredusksjonen er akseptabel.

Skrevet

Ok :)

 

Det er pt ikke spesielt mye belastining på databasen, så jeg tror ikke det skal være noe problem.

 

Men vil loggen bare fortsette å vokse hele tiden, eller slettes det gamle ting der av seg selv?

Skrevet
Hvis recovery model er Simple så skal virtuelle log filer som ikke er aktive gjenbrukes, og log filen vil derfor ikke vokse.

Med mindre det kommer en ekstremt stor transaksjon, men det er jo ikke akkurat noe problem her etter det jeg har forstått.

Skrevet

hehe. Nei, ikke akkurat :) Det er generelt småting som plopper inn, hentes ut og oppdateres... Lite jobb som ligger i selve sql serveren, egentlig.

  • 2 uker senere...
Skrevet

Vet ikke om du har funnet ut av det enda, men her er en grei måte som funker både på 200 og 2005.

use test
go

select * from sysfiles;

dbcc shrinkfile ('test_log');

backup log test with truncate_only;

dbcc shrinkfile ('test_log', 2);

Skrevet

Vel, jeg synes nå ikke det er greit å ikke gjøre jobben skikkelig. Hvis du har råd til å forkaste transaksjonsloggen, så skal recovry model være satt til simple. SÅ kan du krympe loggen, til en størrelse som er så stor at du ikke forventer at loggen trenger å vokse.

Skrevet

det er bare på dev den ikke står på simple. i det jeg skulle flytte den over til prod satte jeg den til simple der, og har ikke noen problemer med loggen nå :)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...