• 数据库日志文件太大如何处理


    今天遇到一个状况,一个数据库的日志文件过大,导致占用了过多的服务器硬盘空间。需要对于数据库的日志文件进行瘦身。网上查询了一下资料,分享几个链接。

    由于SQL2008对文件和日志管理进行了优化,所以部分在SQL2005中可以运行,在SQL2008中已经被取消。

    如:DUMP TRANSACTION 库名 WITH NO_LOG

    参考文章

    http://jimshu.blog.51cto.com/3171847/932669

    http://www.cnblogs.com/TLLi/archive/2012/07/15/2592042.html

    http://www.cnblogs.com/tylerdonet/p/3550434.html

    http://www.cnblogs.com/qingyuan/p/4238071.html

    http://www.cnblogs.com/Joe-T/archive/2011/12/22/2298051.html

    自己总结

    1.收缩数据(一种是界面操作,一种是执行sql语句,个人倾向于执行sql语句)

    界面操作

    第一,

    -- 修改数据为SIMPLE类型

    ALTER DATABASE 数据库名 SET RECOVERY SIMPLE   

    GO

    第二,

    选择要收缩的数据库,右键-->任务-->收缩-->文件

    第三,

    ALTER DATABASE 数据库名 SET RECOVERY FULL
    GO

    sql语句执行

    -- 检查日志文件名称
    USE 数据库名
    SELECT NAME, size FROM sys.database_files

    一般_log 就是日志文件,记录一下

    最终执行语句

    USE master
    GO
    ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT
    GO
    ALTER DATABASE 数据库名 SET RECOVERY SIMPLE   
    GO
    
    USE 数据库名 
    GO
    DBCC SHRINKFILE (N'数据库日志名' , 2, TRUNCATEONLY)
    GO
    
    USE master
    GO
    ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT
    GO
    ALTER DATABASE 数据库名 SET RECOVERY FULL   
    GO

    以下是常用语句

    -- 检查日志文件名称
    USE 数据库名
    SELECT NAME, size FROM sys.database_files

    -- 查看数据库的recovery_model_desc类型
    SELECT NAME, recovery_model_desc FROM sys.databases

    -- 如果是FULL类型,修改为SIMPLE类型  
    ALTER DATABASE ChinaKnowledgeDB SET Recovery simple

    -- 收缩日志文件大小(单位是M)
    DBCC SHRINKFILE (N'ChinaKnowledgeDB_log' , 10)

    -- 恢复成FULL类型
    ALTER DATABASE ChinaKnowledgeDB SET Recovery FULL

    总结:收缩日志一定要把数据变为简单模式

  • 相关阅读:
    使用邮件规则,将收到的邮件进行分类
    QTP连载一:QTP安装及几个重点目录说明
    LR运行QTP脚本
    利用InstallWatch捕获软件操作
    LoadRunner录制时HTML和URL的选择
    QTP连载三:几种参数化的简单比较
    LR学习笔记1(关于数据分析)
    C++生成随机数:正态分布(normal distribution)
    vs编译器生成错误
    wxWidgets 几个实用的系统函数
  • 原文地址:https://www.cnblogs.com/tfiremeteor/p/5811190.html
Copyright © 2020-2023  润新知