miércoles, 9 de abril de 2008

Limpiar el LOG de transacciones de tus BD

DECLARE @sql nvarchar(4000)
SET @sql = '
IF ''?'' NOT IN (''tempdb'',''master'',''model'',''msdb'')
BEGIN
   PRINT ''SHRINK LOG FILES FOR ?''
   USE [?]
   DECLARE @tsql nvarchar(4000) SET @tsql = ''''
   DECLARE @LogFileId int
   DECLARE LogFiles CURSOR FOR
      SELECT fileid FROM sysfiles WHERE status & 0x40 = 0x40
   OPEN LogFiles
   FETCH next FROM LogFiles INTO @LogFileId
   WHILE @@fetch_status = 0
   BEGIN
      SET @tsql = @tsql + ''DBCC SHRINKFILE('' + cast(@LogFileId AS varchar(5)) + '', 1)'' + CHAR(13) + CHAR(10)
      FETCH next FROM LogFiles INTO @LogFileId
   END
   CLOSE LogFiles
   DEALLOCATE LogFiles
   SET @tsql = @tsql + ''BACKUP LOG [?] WITH TRUNCATE_ONLY'' + CHAR(13) + CHAR(10) + @tsql
   EXEC(@tsql)
END'
EXEC sp_msforeachdb @sql

No hay comentarios: