Transaktionsprotokoll aller Datenbanken verkleinern (Microsoft SQL Server)

Um das Transaktionsprotokoll aller SQL Datenbanken zu verkleinern eignet sich folgendes Script:

DECLARE @DatabaseName NVARCHAR(255);
DECLARE @LogFileName NVARCHAR(255);
DECLARE @OriginalRecoveryModel NVARCHAR(50);
DECLARE @Sql NVARCHAR(MAX);

-- Cursor über alle Datenbanken außer Systemdatenbanken
DECLARE DatabaseCursor CURSOR FOR
SELECT name
FROM sys.databases
WHERE state = 0 -- Nur Online-Datenbanken
 AND name NOT IN ('master', 'tempdb', 'model', 'msdb'); -- Systemdatenbanken ausschließen

OPEN DatabaseCursor;

FETCH NEXT FROM DatabaseCursor INTO @DatabaseName;

WHILE @@FETCH_STATUS = 0
BEGIN
   -- Ermitteln des aktuellen Recovery Models
   SELECT @OriginalRecoveryModel = recovery_model_desc
   FROM sys.databases
   WHERE name = @DatabaseName;

   -- Hole den logischen Namen der Log-Datei
   SELECT @LogFileName = name
   FROM sys.master_files
   WHERE database_id = DB_ID(@DatabaseName)
     AND type_desc = 'LOG';

   -- Recovery Model auf SIMPLE umstellen
   SET @Sql = 'ALTER DATABASE [' + @DatabaseName + '] SET RECOVERY SIMPLE;';
   PRINT 'Executing: ' + @Sql;
   EXEC(@Sql);

   -- Log-Datei schrumpfen
   SET @Sql = 'USE [' + @DatabaseName + ']; DBCC SHRINKFILE ([' + @LogFileName + '], 1);';
   PRINT 'Executing: ' + @Sql;
   EXEC(@Sql);

   -- Ursprüngliches Recovery Model wiederherstellen
   IF @OriginalRecoveryModel = 'FULL'
       SET @Sql = 'ALTER DATABASE [' + @DatabaseName + '] SET RECOVERY FULL;';
   ELSE IF @OriginalRecoveryModel = 'BULK_LOGGED'
       SET @Sql = 'ALTER DATABASE [' + @DatabaseName + '] SET RECOVERY BULK_LOGGED;';
   ELSE
       SET @Sql = 'ALTER DATABASE [' + @DatabaseName + '] SET RECOVERY SIMPLE;';

   PRINT 'Reverting Recovery Model: ' + @Sql;
   EXEC(@Sql);

   FETCH NEXT FROM DatabaseCursor INTO @DatabaseName;
END;

CLOSE DatabaseCursor;
DEALLOCATE DatabaseCursor;

Das Script liest den aktuellen Recovery Modus der Datenbank aus, stellt diesen auf SIMPLE um, verkleinert die Transaktionsprotokolle und stellt den Recovery Modus wieder auf den ursprünglichen Eintrag zurück.