DECLARE@LogicalFileName sysname, @MaxMinutesINT, @NewSizeINT SELECT@LogicalFileName='SBODemo_China_log', -- 日志文件名 @MaxMinutes=10, -- Limit on time allowed to wrap log. @NewSize=20-- 你想设定的日志文件的大小(M) -- Setup / initialize DECLARE@OriginalSizeint SELECT@OriginalSize= size FROM sysfiles WHERE name =@LogicalFileName SELECT'Original Size of '+db_name() +' LOG is '+ CONVERT(VARCHAR(30),@OriginalSize) +' 8K pages or '+ CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) +'MB' FROM sysfiles WHERE name =@LogicalFileName CREATETABLE DummyTrans (DummyColumn char (8000) notnull) DECLARE@CounterINT, @StartTimeDATETIME, @TruncLogVARCHAR(255) SELECT@StartTime=GETDATE(), @TruncLog='BACKUP LOG '+db_name() +' WITH TRUNCATE_ONLY' DBCC SHRINKFILE (@LogicalFileName, @NewSize) EXEC (@TruncLog) -- Wrap the log if necessary. WHILE@MaxMinutes>DATEDIFF (mi, @StartTime, GETDATE()) -- time AND@OriginalSize= (SELECT size FROM sysfiles WHERE name = @LogicalFileName) AND (@OriginalSize*8/1024) >@NewSize BEGIN-- Outer loop. SELECT@Counter=0 WHILE ((@Counter<@OriginalSize/16) AND (@Counter<50000)) 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 DROPTABLE DummyTrans SET NOCOUNT OFF