做一个JOB,定期,可以是每天执行一次,执行前先判断日志文件是不是大于你的操作值,如果大于就清空日志,日志文件大小可以从系统表获得。

解决方案 »

  1.   

    1.将sql服务停止,然后直接删除ldf文件。
    2.在数据库属性中选中auto shrink
      

  2.   

    job定期调用下过程:SET NOCOUNT ON
    DECLARE @LogicalFileName sysname,
    @MaxMinutes INT,
    @NewSize INT
    USE WebRoot -- 要操作的数据库名
    SELECT @LogicalFileName = 'WebRoot_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
      

  3.   

    清空日志
    DUMP  TRANSACTION  @DataBaseName  WITH  NO_LOG  
     
    DBCC  SHRINKFILE(  @LogoFileName,@NewSize)
    这样只是减小,不是删除。
      

  4.   

    加問﹕Sql 2000是不是同樣方法?
      

  5.   

    to pengdali(大力) 
      sp_repldone 怎么用呀,我现在运行时报错!!!Only the owner of database 'pos_cen' can run the DBCC ShrinkFile statement.
    DBCC execution completed. If DBCC printed error messages, contact your system administrator.
    The log was not truncated because records at the beginning of the log are pending replication. Ensure the Log Reader Agent is running or use sp_repldone to  transactions as distributed.