MS SQL скрипт (T-SQL) — shrink .log (Transaction Log) файлов баз данных.

--Variables for cursors
DECLARE @DBName nvarchar(100)

--Cursor for temp..LogFiles filling 
DECLARE Cursor_for_EnumDBs CURSOR 
FOR SELECT name FROM sys.databases
         WHERE name <> 'master' AND
               name <> 'tempdb' AND
	     name <> 'model' AND
	     name <> 'msdb' AND
               name <> 'NoShrinkLogDB'
         ORDER BY name;
OPEN Cursor_for_EnumDBs
FETCH NEXT FROM Cursor_for_EnumDBs INTO @DBName WHILE @@FETCH_STATUS = 0
BEGIN
	--Dynamic query for Transaction Log shrink
	EXEC('
        		USE ' + @DBName + ';
	    	DECLARE @LogName nvarchar(100);
	    	SELECT name INTO #LogFiles FROM sys.database_files WHERE type = 1 AND state = 0;
	    	DECLARE Cursor_for_EnumLogFiles CURSOR FOR SELECT * FROM #LogFiles 
	    	OPEN Cursor_for_EnumLogFiles
	    	FETCH NEXT FROM Cursor_for_EnumLogFiles INTO @LogName WHILE @@FETCH_STATUS = 0
	    	BEGIN
		 	DBCC SHRINKFILE(@LogName);
	        	    	FETCH NEXT FROM Cursor_for_EnumLogFiles INTO @LogName
	    	END
	    	CLOSE Cursor_for_EnumLogFiles
	     	DEALLOCATE Cursor_for_EnumLogFiles
		')
	FETCH NEXT FROM Cursor_for_EnumDBs INTO @DBName	
END
CLOSE Cursor_for_EnumDBs
DEALLOCATE Cursor_for_EnumDBs