数据库日志清除SET NOCOUNT ON
数据库日志清除
DECLARE @LogicalFileName sysname,
数据库日志清除        
@MaxMinutes INT,
数据库日志清除        
@NewSize INT
数据库日志清除
数据库日志清除
数据库日志清除
USE     tablename             -- 要操作的数据库名
数据库日志清除
SELECT  @LogicalFileName = 'tablename_log',  -- 日志文件名
数据库日志清除
@MaxMinutes = 10,               -- Limit on time allowed to wrap log.
数据库日志清除
        @NewSize = 1                  -- 你想设定的日志文件的大小(M)
数据库日志清除

数据库日志清除
-- Setup / initialize
数据库日志清除
DECLARE @OriginalSize int
数据库日志清除
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
数据库日志清除
CREATE TABLE DummyTrans
数据库日志清除  (DummyColumn 
char (8000not null)
数据库日志清除
数据库日志清除
数据库日志清除
DECLARE @Counter   INT,
数据库日志清除        
@StartTime DATETIME,
数据库日志清除        
@TruncLog  VARCHAR(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, @StartTimeGETDATE()) -- 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 < @OriginalSize / 16AND (@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
数据库日志清除
DROP TABLE DummyTrans
数据库日志清除
SET NOCOUNT OFF 
数据库日志清除
数据库日志清除

相关文章: