当前位置: 首页 > news >正文

自动压缩MS SQL数据库日志

前段时间做一个WEB项目时,要求做大数据量测试,数据库服务器硬盘很小,项目组几个人没几天就把服务器硬盘撑满了, 于是上网找了一段压缩数据库的脚本,改动了一下,这样不用每天去人为清除日志了,大家知道常见的清除日志的方法(当初偶应聘现在的公司时,老板就问我怎么清除数据库日志,偶当时懵了,没搞过,胡乱说先备份再回复,备份时不备份日志就可以了,谁知这个方法也是对了,只是操作有点麻烦),先分离数据库,然后再把日志文件删除,再附加数据库就OK了。脱离主题啦,还是谈谈刚才的话题:
1、编写压缩日志脚本compresslog.sql

None.gif SET  NOCOUNT  ON
None.gif
DECLARE   @LogicalFileName  sysname,
None.gif        
@MaxMinutes   INT ,
None.gif        
@NewSize   INT
None.gif
None.gif
None.gif
USE      eservice_mts_test              --  要操作的数据库名
None.gif
SELECT    @LogicalFileName   =   ' dbname_Log ' ,   --  日志文件名
None.gif
@MaxMinutes   =   10 ,                --  Limit on time allowed to wrap log.
None.gif
         @NewSize   =   1                    --  你想设定的日志文件的大小(M)
None.gif

None.gif
--  Setup / initialize
None.gif
DECLARE   @OriginalSize   int
None.gif
SELECT   @OriginalSize   =  size 
None.gif  
FROM  sysfiles
None.gif  
WHERE  name  =   @LogicalFileName
None.gif
SELECT   ' Original Size of  '   +   db_name ()  +   '  LOG is  '   +  
None.gif        
CONVERT ( VARCHAR ( 30 ), @OriginalSize +   '  8K pages or  '   +  
None.gif        
CONVERT ( VARCHAR ( 30 ),( @OriginalSize * 8 / 1024 ))  +   ' MB '
None.gif  
FROM  sysfiles
None.gif  
WHERE  name  =   @LogicalFileName
None.gif
CREATE   TABLE  DummyTrans
None.gif  (DummyColumn 
char  ( 8000 not   null )
None.gif
None.gif
None.gif
DECLARE   @Counter     INT ,
None.gif        
@StartTime   DATETIME ,
None.gif        
@TruncLog    VARCHAR ( 255 )
None.gif
SELECT    @StartTime   =   GETDATE (),
None.gif        
@TruncLog   =   ' BACKUP LOG  '   +   db_name ()  +   '  WITH TRUNCATE_ONLY '
None.gif
None.gif
DBCC  SHRINKFILE ( @LogicalFileName @NewSize )
None.gif
EXEC  ( @TruncLog )
None.gif
--  Wrap the log if necessary.
None.gif
WHILE       @MaxMinutes   >   DATEDIFF  (mi,  @StartTime GETDATE ())  --  time has not expired
None.gif
       AND   @OriginalSize   =  ( SELECT  size  FROM  sysfiles  WHERE  name  =   @LogicalFileName )  
None.gif      
AND  ( @OriginalSize   *   8   / 1024 >   @NewSize   
None.gif  
BEGIN   --  Outer loop.
None.gif
     SELECT   @Counter   =   0
None.gif    
WHILE   (( @Counter   <   @OriginalSize   /   16 AND  ( @Counter   <   50000 ))
None.gif      
BEGIN   --  update
None.gif
         INSERT  DummyTrans  VALUES  ( ' Fill Log ' )  
None.gif        
DELETE  DummyTrans
None.gif        
SELECT   @Counter   =   @Counter   +   1
None.gif      
END    
None.gif    
EXEC  ( @TruncLog )  
None.gif  
END    
None.gif
SELECT   ' Final Size of  '   +   db_name ()  +   '  LOG is  '   +
None.gif        
CONVERT ( VARCHAR ( 30 ),size)  +   '  8K pages or  '   +  
None.gif        
CONVERT ( VARCHAR ( 30 ),(size * 8 / 1024 ))  +   ' MB '
None.gif  
FROM  sysfiles 
None.gif  
WHERE  name  =   @LogicalFileName
None.gif
DROP   TABLE  DummyTrans
None.gif
SET  NOCOUNT  OFF  
None.gif
None.gif

2、编写批处理文件compresslog.bat
None.gif isql -U dbuser -P dbpass -S dbservername -d dbname -i compresslog.sql -o 1.log

isql命令行指令可以参考SQL Server 帮助手册
3、在windows计划任务里面制定一个任务,应用指定为Compresslog.bat,Schedule可以安排在晚上进行,
这样每天早上过来上班日志永远都是1M.

相关文章:

  • 五大绝招让你永远是人才
  • [转载]什么是IOC
  • 洛谷P3146 [USACO16OPEN]248
  • TechEd亲历图集
  • 秘制祖传正宗四川麻辣烫锅底配方
  • SqlPersistenceService数据库结构
  • 如何禁止内部viewPager滑动
  • ADO.NET 2.0 - 如何使用 DataView 来筛选数据
  • Sony DV的CCD也是有问题的
  • CakePHP中文手册【翻译】-请求处理组件
  • Itemplate自定义模板列
  • 委托的例子
  • 收藏
  • Linux的发行版及其不同发行版直接的联系与区别
  • 关于qq被盗问题.....
  • JavaScript-如何实现克隆(clone)函数
  • 【node学习】协程
  • 【刷算法】从上往下打印二叉树
  • 2018一半小结一波
  • iOS编译提示和导航提示
  • Js基础——数据类型之Null和Undefined
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • MYSQL 的 IF 函数
  • nodejs实现webservice问题总结
  • React的组件模式
  • swift基础之_对象 实例方法 对象方法。
  • vue-router 实现分析
  • Zepto.js源码学习之二
  • 百度地图API标注+时间轴组件
  • 测试开发系类之接口自动化测试
  • 将 Measurements 和 Units 应用到物理学
  • 力扣(LeetCode)21
  • 前端之React实战:创建跨平台的项目架构
  • 深度学习中的信息论知识详解
  • 【干货分享】dos命令大全
  • #if #elif #endif
  • #pragma once与条件编译
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Python) SOAP Web Service (HTTP POST)
  • (多级缓存)多级缓存
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (翻译)terry crowley: 写给程序员
  • (生成器)yield与(迭代器)generator
  • (十六)Flask之蓝图
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .bat批处理(一):@echo off
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Micro Framework初体验(二)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • .py文件应该怎样打开?