Hallo, mein Name ist Curt. Ich bin Senior Principal Engineer und arbeite mit dem GSE-Team.
In diesem Video wird gezeigt, wie eine Microsoft SQL Server-Datenbanktransaktionsprotokolldatei verkleinert wird. Wir besprechen die verschiedenen Möglichkeiten, das Transaktionsprotokoll zu verkleinern, und was zu tun ist, wenn der Verkleinerungsprotokollvorgang nicht wie erwartet ausgeführt wird.
Wir haben also verschiedene Möglichkeiten, die Protokolldatei zu verkleinern. Wir können SQL Server Management Studio aufrufen. Gehen Sie zu den Eigenschaften der Datenbank und führen Sie dort den Verkleinerungsvorgang durch. Das werden wir als Erstes demonstrieren.
Dann haben wir auch noch den TSQL ShrinkFile-Befehl. Die andere Sache, die wir in diesem speziellen Video besprechen möchten, ist, was passiert, wenn der Vorgang zum Verkleinern der Datei nicht wie erwartet ausgeführt wird, und wir werden die Optionen besprechen, die Sie in diesem Fall verwenden sollten. Kommen wir nun zu Studio Management.
Wir arbeiten mit der Datenbank "AdventureWorks 2017". Wenn wir im Menü "Datenbank" auf "Aufgaben" und dann auf "Verkleinern" klicken, haben wir zwei verschiedene Optionen.
Wir könnten auf Datenbankebene arbeiten und mit allen Dateien in der Datenbank oder mit bestimmten Dateien arbeiten, und in diesem Fall möchten wir auf jeden Fall mit bestimmten Dateien arbeiten. Wenn Sie sich unsere Farbpalette hier ansehen, sehen Sie unter "File type" die Daten.
Wir werden nichts mit der Datenbankdatei tun, sondern versuchen, das Transaktionsprotokoll zu verkleinern, sodass das Transaktionsprotokoll buchstäblich "Protokoll" unter dem "Dateityp" ist. Nun haben wir einige Informationen zur Datenbank.
Das Datenbankprotokoll ist relativ klein, es handelt sich um eine neue Datenbank. Wir sehen die Größe, die diesem Transaktionsprotokoll zugewiesen ist, und wir sehen freien Speicherplatz. Freier Speicherplatz kann wichtig sein, da ohne freien Speicherplatz kein Dateiverkleinerungsvorgang in einer Datenbank ausgeführt werden kann.
Hier stehen verschiedene Optionen zur Verfügung. Wir werden hier nicht ins Detail gehen, aber wir haben die Möglichkeit, ungenutzten Speicherplatz freizugeben, was im Grunde genommen eine Kürzung des Transaktionsprotokolls bedeutet. Wir könnten dies ausführen, indem wir einfach auf "OK" klicken, und es würde eine Verkleinerung oder einen Versuch einer Verkleinerung der Datenbank durchgeführt werden. Stattdessen werfen wir einen Blick auf die TSQL-Option zum Verkleinern der Datenbank.
Ich bin heute ein bisschen faul, also gehe ich zu 'Script Action to Clipboard', das die Transaktion abruft, den TSQL-Befehl, der ausgeführt worden wäre, wenn wir hier auf OK geklickt hätten.
Ich klicke auf "Abbrechen" und füge den TSQL-Befehl ein, um die AdventureWorks2017-Datenbank zu verkleinern. Um den Befehl noch einmal durchzugehen: Es handelt sich um einen Befehl zum Verkleinern der Datei. Wir haben es mit dem AdventureWorks2017-Protokoll zu tun und können angeben, wie klein dieses Protokoll sein soll.
In diesem Fall behalten wir den Standardwert null bei. Wenn Sie hier nichts definieren oder den Wert bei Null belassen, wird versucht, die Datei auf die ursprüngliche Dateigröße zu verkleinern. Wir haben die Option "truncateonly", die freien Speicherplatz innerhalb des Transaktionsprotokolls an das Betriebssystem zurückgibt.
Während wir das ausführen, haben wir jetzt einen Bericht über die Leistung und die aktuelle Größe. Also ging es weiter und reduzierte es auf etwa ein Meg, was für uns großartig ist. Damit haben wir viel mehr zusätzlichen Speicherplatz erhalten. In diesem Video möchten wir auch darüber sprechen, was passiert, wenn wir die Verkleinerung der Datei ausführen und sie nicht erfolgreich ausgeführt wird.
Der Hauptgrund, warum der Vorgang zum Verkleinern der Datei fehlschlagen würde, ist, dass nicht genügend freier Speicherplatz in der Datenbank vorhanden ist, um den Befehl zum Verkleinern der Datei auszuführen. Als Erstes werden wir herausfinden wollen, wie viel freier Speicherplatz in der Datei vorhanden ist.
Wir haben es über das GUI-Menü gesehen, für das wir diesen speziellen Befehl auch ausführen können. Jetzt haben wir unseren Fokus hier geändert und arbeiten stattdessen mit der AdventureWorks2019-Datenbank. Wenn wir diesen speziellen Befehl ausführen, den Befehl select, erhalten wir die Menge an freiem Speicherplatz, die in dieser Datenbank vorhanden ist.
Derzeit sehen wir drei Megabyte freien Speicherplatz in der Datenbank. Es gibt zwei verschiedene Optionen, mit denen wir versuchen können, die Datenbank zu reduzieren, wenn in dieser bestimmten Datenbank kein freier Speicherplatz mehr vorhanden ist. Wir können die Option "Recovery" für die Adventure Works 2019-Datenbank ändern.
Wenn wir die Wiederherstellungsoption in "einfach" ändern und den Befehl dbcc shrink file ausführen, sollte die Datei auf eine Größe reduziert werden, die viel kleiner als die ursprüngliche Größe ist. Wenn wir unsere Datenbank in den einfachen Modus versetzen, verarbeitet das Transaktionsprotokoll aktive Transaktionen und alles, was nicht aktiv ist, wird aus dem Protokoll gelöscht.
Wir können diese speziellen Befehle ausführen. Die meisten Produktionsdatenbanken befinden sich in der vollständigen Wiederherstellung, sodass wir mit "einfach" den Befehl zum Verkleinern der Datei erfolgreich ausführen können oder zumindest die Möglichkeit haben. Wir befinden uns also im einfachen Modus und auch hier ist unser Szenario, dass die Ausführung fehlgeschlagen ist.
Nachdem wir in den einfachen Modus gewechselt sind, führen wir den Vorgang zum Verkleinern der Datei erfolgreich aus, er gibt uns Informationen über die neue Dateigröße, und das Letzte, was wir in diesem speziellen Fall tun möchten, ist, sie wieder in den vollständigen Wiederherstellungsmodus zu versetzen.
An diesem Punkt haben wir also eine unverwaltbare Transaktionsprotokolldatei in Bezug auf den Befehl "shrink file" in einen Zustand gebracht, in dem wir diese Datei verkleinern können, und wir haben sie wieder in einen Modus versetzt, in dem sie jetzt gesichert werden kann, um sicherzustellen, dass wir die neuesten Transaktionsinformationen erhalten.
Damit ist unser Demo zum Verkleinern eines Microsoft SQL Server-Datenbanktransaktionsprotokolls abgeschlossen.
Vielen Dank für Ihre Aufmerksamkeit.