Hvordan rydder du SQL Server-transaktionsloggen?

Jeg er ikke SQL-ekspert, og det bliver jeg mindet om, hver gang jeg skal gøre noget andet end det grundlæggende. Jeg har en testdatabase, der ikke er stor i størrelse, men transaktionsloggen er det bestemt. Hvordan rydder jeg transaktionsloggen?

Her er en simpel og meget uelegant & potentielt farlig måde.

  1. Backup DB
  2. Afbryd DB
  3. Omdøb logfilen
  4. Vedhæft DB
  5. Ny logfil vil blive genskabt
  6. Slet omdøbt logfil.

I'm gætter på, at du ikke laver logbackups. (Som afkorter loggen). Mit råd er at ændre recovery model fra full til simple. Dette vil forhindre log bloat.

Kommentarer (6)

Hvis du ikke bruger transaktionslogfilerne til gendannelser (dvs. du laver kun fulde sikkerhedskopier), kan du indstille Recovery Mode til "Simple", og transaktionsloggen vil meget hurtigt blive mindre og aldrig blive fyldt op igen.

Hvis du bruger SQL 7 eller 2000, kan du aktivere "truncate log on checkpoint" under fanen databaseindstillinger. Dette har den samme effekt.

Dette anbefales naturligvis ikke i produktionsmiljøer, da du ikke vil kunne gendanne til et bestemt tidspunkt.

Kommentarer (5)

For at afkortes logfilen:

  • Tag en sikkerhedskopi af databasen
  • Frigør databasen, enten ved at bruge Enterprise Manager eller ved at udføre : Sp_DetachDB [DBName]
  • Slet transaktionslogfilen. (eller omdøb filen, for en sikkerheds skyld)
  • Tilknyt databasen igen ved hjælp af: Sp_AttachDB [DBName]
  • Når databasen tilknyttes, oprettes der en ny transaktionslogfil.

For at krympe logfilen:

  • Sikkerhedskopier log [DBName] med No_Log

  • Skrump databasen ved enten at:

    Brug Enterprise Manager :- Højreklik på databasen, Alle opgaver, Skrump database, Filer, Vælg logfil, OK.

    Ved hjælp af T-SQL :- Dbcc Shrinkfile ([Log_Logical_Name])

Du kan finde det logiske navn på logfilen ved at køre sp_helpdb eller ved at kigge i databasens egenskaber i Enterprise Manager.

Kommentarer (1)