zoukankan      html  css  js  c++  java
  • 手动清理SQL日志

    BACKUP LOG 数据库名字  WITH NO_LOG   DBCC SHRINKDATABASE(数据库名字)

    =============/******/============

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


    USE   JMFPos   --   要操作的数据库名
    SELECT   @LogicalFileName   =   'JMFPos_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  

    =============/******/============

  • 相关阅读:
    strdup和strndup函数
    c# 获取客户端IP地址方法
    The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.报错解决办法
    C#将Excel数据表导入SQL数据库的两种方法(转)
    Winform 无法监听方向键(向上,向下,向左,向右)
    一个优秀的.net程序员必须要学会的技能 (转)-----参照学习目标
    iTextSharp 使用详解(转)
    mac 快捷键
    mvc 项目运行报错检查web.config
    C语言堆栈入门——堆和栈的区别 -- 转
  • 原文地址:https://www.cnblogs.com/wuhuisheng/p/2112572.html
Copyright © 2011-2022 走看看