如何缩小MS SQL Server日志文件

方法一: 

将数据库日志文件改成简单日志模式

方法二:

 

DUMP   TRANSACTION  你的数据库名  WITH  NO_LOG
BACKUP   LOG  你的数据库名  WITH  NO_LOG
DBCC  SHRINKDATABASE(你的数据库名)
EXEC  sp_dboption  ' 你的数据库名 ' ' autoshrink ' ' TRUE '  

方法三:

 

把代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可(我已经用过多次了)

-- --- 
SET  NOCOUNT  ON  
DECLARE   @LogicalFileName  sysname, 
@MaxMinutes   INT
@NewSize   INT  

USE  Marias  --  要操作的数据库名 
SELECT   @LogicalFileName   =   ' Marias_log ' --  日志文件名 
@MaxMinutes   =   10 --  Limit on time allowed to wrap log. 
@NewSize   =   100   --  你想设定的日志文件的大小(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 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   /   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  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值