PDA

Vollständige Version anzeigen : Transaktionsprotokoll verkleinern


Joachim Hofmann
25.02.2004, 17:28
<strong>Mein Transaktionsprotokoll wächst auf eine nicht mehr tragbare Größe heran, was tun?</strong> <small>(Microsoft SQL Server)</small>

Zunächst:
<li>Transaktionsprotokoll <strong>sichern</strong>. Dabei verkleinert es sich, da ein Teil des Protokolls nun in der Sicherungsdatei steht.
Beispiel einer Sicherung:
<font size=3><code>BACKUP LOG</code></font> &lt;Datenbankname&gt;
<font size=3><code>TO</code></font> &lt;Sicherungsdevice&gt;

<li>Falls man keine Sicherung benötigt, kann man das Transaktionsprotokoll auch <strong>abschneiden</strong>.
Syntax:
<font size=3><code>BACKUP LOG</code></font> &lt;Datenbankname&gt;
<font size=3><code>WITH TRUNCATE_ONLY</code></font>

<strong><font color=#ff0000>Warnung:</font></strong> Eine Wiederherstellung der Datenbank im Fehlerfall mit Hilfe des Transaktionsprotokolls ist in diesem Fall nicht mehr möglich.

<li>Falls das alles noch nicht zum gewünschten Ziel führt, kann man die Datei, die das Transaktionsprotokoll beinhaltet, auch <strong>physikalisch verkleinern</strong>, und zwar auch auf eine Größe unterhalb der bei der Erstellung der Datenbank angegebenen Anfangsgröße. Der Befehl lautet:
<font size=3><code>DBCC SHRINKFILE (</code></font>&lt;logischer Dateiname des Transaktionsprotokolls&gt;<font size=3><code>)</code></font>.

Anmerkung:
Der Befehl <font size=3><code>DBCC SHRINKFILE</code></font> ist auch für Datenbankdateien geeignet. In diesem Fall wird geraten, danach <font size=3><code>DBCC REINDEX</code></font>, oder, einfacher, einen Wartungsplan, der die Tabellen neu indiziert, abzusetzen, da die Daten durch das Verkleinern umorganisiert wurden.

<li>Falls SQL Server für die Aktionen an der jeweiligen Datenbank gar kein Transaktionsprotokoll führen soll, kann man das <strong>Wiederherstellungsmodell</strong> auch auf "einfach" setzen (-&gt; Datenbankeigenschaften; ab SQL Server 2000).
Hierfür gilt die gleiche <font color=#ff0000>Warnung</font> wie im zweiten Punkt.

Anmerkung: Das Setzen dieses Modelltyps ist mit dem Festlegen der Datenbankoption <font size=3><code>trunc. log on chkpt</code></font> bei älteren Versionen von Microsoft SQL Server zu vergleichen.

<li>Um Vorgänge wie Sichern oder Reindizieren zu automatisieren, erstellt man üblicherweise einen <strong>Wartungsplan</strong> oder einen <strong>Auftrag</strong>. Ein Wartungsplan stellt vordefinierte Vorgänge bereit. Ein Auftrag ist dagegen flexibler und bietet komplexere Möglichkeiten wie das Ausführen von SQL-Befehlen.

MoonOverMarin
19.10.2006, 06:49
allerdings ist anzumerken dass das kürzen des logs über diesen befehl für den sql server 2005 nicht mehr empfohlen wird da er in künftigen versionen nicht mehr enthalten sein wird laut ms
wege abwärtskompatibilität geht er aber noch in der 2005er