SQL SERVER日志清除的两种方法

在使用过程中大家经常碰到数据库日志非常大的情况,在这里介绍了两种处理方法......  

方法一

一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft  SQL  Server-->SQL  Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据

方法二

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  (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  

posted @ 2005-06-16 23:53  泡面 @ 幸福  阅读(366)  评论(0)    收藏  举报