Microsoft SQL Server databaselogbestanden kunnen groot worden, waardoor uw database offline gaat en niet beschikbaar is als de locatie van het transactielogboekstation geen ruimte meer heeft. U kunt als volgt het logboekbestand verkleinen om de gebruikte ruimte te verminderen en het probleem op te lossen.
Hallo, mijn naam is Curt. Ik ben een Senior Principal Engineer en werk samen met het GSE-team.
Deze video is bedoeld om te demonstreren hoe u een Microsoft SQL Server-databasetransactielogbestand verkleint. We bekijken de verschillende manieren om het transactielogboek te verkleinen en wat u moet doen als de bewerking voor het verkleinen van het logboek niet wordt uitgevoerd zoals verwacht.
We hebben dus een aantal verschillende manieren om het logbestand te verkleinen. We kunnen naar SQL Server Management Studio gaan. Ga naar de eigenschappen van de database en voer daar de verkleiningsbewerking uit om dat eerst te demonstreren.
Dan hebben we ook nog de werking van het uitvoeren van de TSQL ShrinkFile-opdracht. Het andere dat we in deze specifieke video willen bespreken, is wat er gebeurt als de bewerking voor het verkleinen van het bestand niet wordt uitgevoerd zoals verwacht, en we gaan de opties bespreken die u in dat geval wilt nemen Laten we doorgaan en naar Studio Management gaan.
We gaan werken met de database 'AdventureWorks2017' en als we naar 'Taken' gaan in het databasemenu en uitkomen op 'Verkleinen', hebben we twee verschillende opties.
We zouden op databaseniveau kunnen werken aan het behandelen van alle bestanden binnen de database of aan het omgaan met specifieke bestanden, en in dit geval willen we zeker met specifieke bestanden gaan. Als je hier naar ons palet kijkt, hebben we standaard 'Gegevens' die worden weergegeven onder 'Bestandstype'.
We gaan niets doen met het databasebestand, in plaats daarvan willen we het transactielogboek verkleinen, zodat het transactielogboek letterlijk 'Log' is onder het 'Bestandstype'. Nu hebben we wat informatie over de database.
Het databaselogboek is vrij klein. Dit is een nieuwe database, en we zien de grootte die is toegewezen aan dat transactielogboek en we zien vrije ruimte. Vrije ruimte kan belangrijk zijn omdat we zonder vrije ruimte geen verkleiningsbewerking op een database kunnen uitvoeren.
Er zijn verschillende opties. We gaan hier niet in detail treden, maar we hebben de optie om ongebruikte ruimte vrij te geven, wat in feite het transactielogboek afkapt. We kunnen dit uitvoeren door gewoon op OK te klikken. Dan wordt er een verkleining uitgevoerd, of wordt een poging tot verkleining uitgevoerd op die database. In plaats daarvan gaan we verder en kijken we naar de TSQL-optie voor het verkleinen van de database.
Ik ben een beetje lui vandaag, dus ik ga door en kom bij 'Script Action to Clipboard' die de transactie gaat ophalen, de TSQL-opdracht die zou zijn uitgevoerd als we hier op OK hadden geklikt.
Ik klik op annuleren, en ik plak de opdracht TSQL om een verkleining uit te voeren op onze AdventureWorks2017-database. Om de opdracht nog een keer te doorlopen: het is een opdracht voor het verkleinen van bestanden. We hebben te maken met het AdventureWorks2017-logboek en we kunnen aangeven hoe klein we dat logboek willen hebben.
In dit geval houden we het op nul. Als u hier niets definieert, of als u de waarde op nul laat staan, wordt geprobeerd het bestand te verkleinen tot de oorspronkelijke bestandsgrootte. We hebben de optie 'truncateonly' die vrije ruimte in het transactielogboek teruggeeft aan het besturingssysteem.
Terwijl we dat uitvoeren, hebben we nu een rapport van wat het deed en de huidige grootte. Dus het ging door en bracht het terug tot ongeveer een meg, wat geweldig is voor ons. Daar krijgen we veel meer extra schijfruimte terug. Een van de dingen die we ook in deze video willen bespreken, is wat er gebeurt als we het verkleiningsbestand uitvoeren en het niet met succes wordt uitgevoerd.
De belangrijkste reden waarom de bewerking voor het verkleinen van het bestand zou mislukken, is omdat er niet genoeg vrije ruimte in de database is om de opdracht voor het verkleinen van het bestand uit te voeren. Het eerste dat we willen doen, is de hoeveelheid vrije ruimte in het bestand bepalen.
Nu zagen we het via het GUI-menu daar dat we deze specifieke opdracht ook kunnen uitvoeren tegen - nu hebben we onze focus hier verlegd, we werken in plaats daarvan met de AdventureWorks2019-database. Als we deze specifieke opdracht uitvoeren, de opdracht Select, krijgen we de hoeveelheid vrije ruimte die in die database te zien is.
Momenteel zien we drie meg vrije ruimte in de database. Er zijn twee verschillende opties die we kunnen gebruiken om te proberen de database te verkleinen in het geval dat we geen vrije ruimte meer hebben binnen die specifieke database. We kunnen de optie, de hersteloptie, wijzigen voor de Adventure Works 2019-database.
Als we de hersteloptie wijzigen in 'eenvoudig' en we voeren de opdracht dbcc shrink file uit, dan zou het bestand moeten worden verkleind tot een grootte die veel kleiner is dan de oorspronkelijke grootte. Telkens wanneer we onze database in de eenvoudige modus zetten, heeft het transactielogboek te maken met actieve transacties en alles wat niet actief is, wordt uit het logboek gespoeld.
We kunnen deze specifieke opdrachten uitvoeren. De meeste productiedatabases zullen volledig hersteld zijn, dus als we naar simple gaan, kunnen we de opdracht shrink file met succes uitvoeren, of krijgen we in ieder geval de kans. We bevinden ons dus in de eenvoudige modus en opnieuw is ons scenario dat we dit niet met succes hebben uitgevoerd.
Nadat we naar de eenvoudige modus zijn gegaan, voeren we de bewerking voor het synchroniseren van het bestand met succes uit, het geeft ons de informatie over de nieuwe bestandsgrootte en het laatste wat we in dat specifieke geval zouden willen doen, is het terug in de volledige herstelmodus zetten.
Dus op dit punt hebben we een onbeheerbaar transactioneel logbestand genomen in termen van het gebruik van de opdracht shrink file en het in een staat gebracht waarin we dat bestand kunnen verkleinen en we zetten het terug in een modus waarin er nu een back-up van kan worden gemaakt om ervoor te zorgen dat we de nieuwste transactie-informatie krijgen.
Dat is het einde van onze demo over het verkleinen van een Microsoft SQL Server-databasetransactielogboek.
Bedankt voor uw aandacht.