sql server 压缩日志文件的方法

执行语句如下:

 

DECLARE   @LogicalFileName  sysname,
        
@MaxMinutes   INT ,
        
@NewSize   INT

SELECT    @LogicalFileName   =   ' SBODemo_China_log ' ,   --  日志文件名
@MaxMinutes   =   10 ,                --  Limit on time allowed to wrap log.
         @NewSize   =   20                    --  你想设定的日志文件的大小(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  ( 8000 not   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,  @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
DROP   TABLE  DummyTrans
SET  NOCOUNT  OFF

 只要将'SBODemo_China_log'这个日志文件名替换一下,然后在相应的数据库上执行即可

你可能感兴趣的:(sql,数据库,server,null,table,delete,insert)