手记

自动清理数据库日志文件的方法

       如何删除数据库日志文件,但是想想还是不是不方便需要手工操作,于是想结合作业实现自动清理日志文件,在清理日志文件时我加上了条件,当磁盘控空间不足多少M才会清理,下面介绍如何实现该功能。没有阅读上一篇文章的,可以通过传送门阅读(删除数据库日志文件的方法)!

阅读目录

  • SQL查询磁盘空间大小

  • 存储过程添加作业

  • 示例下载

回到顶部

SQL查询磁盘空间大小

   采用内置的存储过程,即可查看各个磁盘可用空间

   

exec master..xp_fixeddrives

 

 

 

回到顶部

存储过程添加作业

  

GO))BEGIN     dbo.usp_p_CreateJobENDGO dbo.usp_p_CreateJob(    ),             ),                          ,         ,                    ,                                    )AS功能:创建SQL作业参数:    @jobname:作业名称    @sql:要执行的命令    @freqtype:时间周期,month 月,week 周,day 日    @fsinterval:相对于每日的重复次数    @time:开始执行时间,对于重复执行的作业,将从0点到23:59分    @description:作业的描述*/ BEGIN    )    ()            TRANSACTION    INT    0        添加类别    )    BEGIN        '         QuitWithRollback    END        删除作业      )       )          @JobName       )      BEGIN          检查此作业是否为多重服务器作业         ) ) )        BEGIN          多重服务器作业不操作          '          )            QuitWithRollback        END        ELSE         BEGIN           删除[本地]作业           @JobName          NULL         END       END      NULL        ,             ,             ,             ,             ,             ,             ,             ,             ,              OUTPUT     QuitWithRollback    */    ,             ,             ,             ,             ,             ,             ,             ,             ,             ,             ,             ,             0     QuitWithRollback    1     QuitWithRollback        创建调度    int    4                                            8                                                        ,end    0    end        ,         ,         ,                                                ,                                               ,                               ,                ,        @time                                      QuitWithRollback    '     QuitWithRollback    TRANSACTION     EndSave    QuitWithRollback:            EndSave:ENDGO

 

       结合上一篇文章的usp_p_delDBLog,进行改造

  

 

GO))BEGIN     dbo.usp_p_delDBLogENDGO usp_p_delDBLog(    ,    )*    功能:收缩当前数据库日志文件*    参数  @DriveLimit:当前数据库所在磁盘空间到达多少的时候进行收缩数据库  MB*          @DBLogSise:日志文件收缩至多少M 默认收缩到最小*/AS BEGIN    0    BEGIN        RETURN    END        当前数据库所在磁盘    )    BIGINT       sysfiles     #TempFile(        Drive 磁盘        Available 可用大小MB    )     #TempFile(Drive,Available)     master..xp_fixeddrives    查询当前数据库所在磁盘剩余空间大小     #TempFile    @Drive    符合条件则进行收缩日志文件    @DriveLimit    BEGIN            查询出数据库对应的日志文件名称        )        )        )                SELECT             B.name,            A.name         A         B         B.database_id        ()                             --设置数据库恢复模式为简单        ALTER DATABASE [] SET RECOVERY SIMPLE;        --收缩日志文件        DBCC SHRINKFILE ();        --恢复数据库还原模式为完整        ALTER DATABASE ['        )        END         #TempFileENDGO


这里主要添加了查询当前数据库所在磁盘空间剩余大小的功能

    当前数据库所在磁盘    )    BIGINT       sysfiles     #TempFile(        Drive 磁盘        Available 可用大小MB    )     #TempFile(Drive,Available)     master..xp_fixeddrives    查询当前数据库所在磁盘剩余空间大小     #TempFile    @Drive

好了上面的准备工作做完以后可以通过以下SQL进行添加自动运行的作业

----执行条件为磁盘空间不足 5000MB,即@DriveLimit=5000 可自行配置)' varchar(100)     varchar(max)     varchar(6)     int     int     varchar(1000)

0人推荐
随时随地看视频
慕课网APP