Hoe maak je het SQL Server transactielogboek leeg?

Ik'ben geen SQL-expert, en ik'word daar elke keer aan herinnerd als ik iets moet doen dat verder gaat dan de basis. Ik heb een testdatabase die niet groot in omvang is, maar het transactielogboek is dat zeker wel. Hoe kan ik het transactielogboek leegmaken?

Hier is een eenvoudige en zeer onelegante & potentieel gevaarlijke manier.

  1. Back-up DB
  2. Koppel DB los
  3. Hernoem logbestand
  4. DB aankoppelen
  5. Nieuw logbestand zal opnieuw worden aangemaakt
  6. Hernoemd logbestand verwijderen.

Ik'm gok dat je geen log backups doet. (Die het logbestand trunceren). Mijn advies is om het herstelmodel te wijzigen van volledig in eenvoudig. Dit zal log bloat voorkomen.

Commentaren (6)

Als u de transactielogboeken niet gebruikt voor herstel (d.w.z. u maakt alleen volledige back-ups), kunt u de herstelmodus instellen op "Simple" en het transactielogboek zal zeer binnenkort krimpen en nooit meer vollopen.

Als u SQL 7 of 2000 gebruikt, kunt u "truncate log on checkpoint" aanzetten in de database options tab. Dit heeft hetzelfde effect.

Dit is natuurlijk niet aan te raden in productie-omgevingen, omdat u dan niet meer kunt herstellen naar een bepaald punt in de tijd.

Commentaren (5)

Om het logbestand in te korten:

  • Maak een back-up van de database
  • Ontkoppel de database, hetzij met behulp van Enterprise Manager of door het uitvoeren van : Sp_DetachDB [DBName]
  • Verwijder het transactielogbestand. (of hernoem het bestand, voor het geval dat)
  • Koppel de database weer aan met: Sp_AttachDB [DBName]
  • Wanneer de database is gekoppeld, wordt een nieuw transactielogbestand aangemaakt.

Om het logbestand te verkleinen:

  • Backup log [DBName] met No_Log

  • Verklein de database door ofwel:

    Enterprise manager te gebruiken :- Klik met de rechtermuisknop op de database, Alle taken, Databank verkleinen, Bestanden, Selecteer logbestand, OK.

    Met T-SQL :- Dbcc Shrinkfile ([Log_Logical_Name])

U kunt de logbestandnaam vinden door sp_helpdb uit te voeren of door in de eigenschappen van de database in Enterprise Manager te kijken.

Commentaren (1)