-- Wrap the log if necessary. WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) AND (@OriginalSize * 8 /1024) > @NewSize BEGIN -- Outer loop. SELECT @Counter = 0 WHILE ((@Counter BEGIN -- update INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans SELECT @Counter = @Counter + 1 END EXEC (@TruncLog) END
SELECT 'Final Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),size) + ' 8K pages or ' + CONVERT(VARCHAR(30),(size*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileName
DROP TABLE DummyTrans SET NOCOUNT OFF
详细解释:
关键的语句是:
'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'和
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY':