Auswertung der Log-File Größe
Die Transaktionsprotokolle von MS SQL Server Datenbank wachsen stetig an, bis sie wieder gesichert werden; man kennt das Spiel ja. Ebenso, das man ein Auge auf die Größe der Dateien und den noch freien Platz haben sollte.
Dazu gibt es den Standard DBCC Befehl
DBCC SQLPERF(LOGSPACE);
Das Ergebnis ist soweit nett & informative, bei vielen Datenbanken etwas unübersichtlich und so erst mal nicht zum Auswerten geeignet. Will man das Ergebnis analysieren, geht man den kleinen Umweg über eine temporäre Tabelle, die man mit dem DBCC Ergebnis füllt; mit der kann man dann weiterarbeiten, hier ein Beispiel als T-SQL Script dazu:
-- Ab Microsoft SQL Server 2000 -- Auflisten aller Logfiles mit der Größe in MB -- Kann in jeder beliebigen DB für alle ausgeführt werden -- Temporäre Tabelle für das Ergebnis von DBCC anlegen CREATE TABLE #tmpLogSpace
(DBName sysname, LogSize money, LogUsage money, Status int ) GO -- DBCC INSERT INTO #tmpLogSpace
EXEC ('DBCC SqlPerf(LogSpace)')
GO -- Nun kann analysiert werden -- Für den Überblick eine Zusammenfassung SELECT COUNT(*) AS CountLogFiles, SUM(LogSize) AS TotalLogMB,
MAX(LogUsage) AS MaxLogUsage, AVG(LogUsage) AS AvgLogUsage
FROM #tmpLogSpace;
-- Die einzelnen Logs absteigend sortiert nach Größe MB -- Alternative: ORDER BY LogUsage DESC -- für die "vollsten" Logs SELECT DBName, LogSize, LogUsage
FROM #tmpLogSpace
ORDER BY LogSize DESC, LogUsage DESC, DBName
GO -- Temp abräumen DROP TABLE #tmpLogSpace
GO