清理SQL Server日志释放文件空间的终极方法

 转自:http://www.cnblogs.com/dudu/archive/2013/04/10/3011416.html

【问题场景】有一个数据库,它的名字叫CNBlogsText,日志文件霸占了23G硬盘空间,而事务日志已经截断(Truncate),实际日志内容很小,1G都不到。23G的空间只放1G不到的日志,就如同用一栋别墅养一只宠物,太奢侈了!秉承中华民族勤俭节约的美德,这种奢侈是绝对不允许的,必须要释放日志文件霸占的多余空间。

但是,无论怎么收缩(Shrink)日志文件,空间就是不能释放,总是出现错误:

Cannot shrink log file 2 (CNBlogsText_log) because of minimum log space required.

之前解决过类似的问题,也写过一篇博客-SQL Server 2008事务日志清理,当时采用的最终解决方法是:

  • 将恢复模式由完整(Full)改为简单(Simple)
  • 收缩(Shrink)日志文件
  • 将恢复模式由简单(Simple)改为完整(Full)

一直以为这就是终极方法,但是竟然没能终结这次遇到的问题。

经过不懈的努力,终于找到真正的终极方法:

1. Detach数据库(Detach之前一定要屏蔽所有对这个数据库的写入操作,这是血的教训

2. 删除或重命名日志文件

3. Attach数据库,这时会提示找不到日志文件

4. 移除(Remove)这个找不到的日志文件,然后点击Ok进行Attach,SQL Server会在数据文件所在的文件夹自动创建一个新的日志文件完成Attach。

5. 如果日志文件需要存放在另外的路径,要再通过Detach/Attach进行日志文件的移动操作。

  • Detach数据库
  • 将日志文件移动至新的位置
  • Attach数据库,修改日志文件的路径并完成Attach

该终极方法的弊端是在操作期间,被操作的数据库不能被正常访问。

这就是我找到的清理SQL Server日志释放文件空间的终极方法。也许有经验的你觉得这是常识,我才不管呢,只要能秒杀实际问题,就值得分享!

清理SQL Server日志释放文件空间的终极方法的更多相关文章

  1. (转)SQL SERVER 日志已满的处理方法

    本文转载自:http://www.cnblogs.com/eycbest/archive/2012/01/04/2311567.html 事务日志文件Transaction Log File是用来记录 ...

  2. SQL SERVER 日志已满的处理方法 (转)

    事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf.在 SQL Server 7.0 和 SQL Server 2000 中,如果设置了自动增长功能,事 ...

  3. SQL Server日志文件庞大收缩方法(实测好用)

    原文:SQL Server日志文件庞大收缩方法(实测好用) 这两个命令连续执行,间隔时间越少越明显(可多次运行),直到达到效果 --截断 BACKUP LOG CloudMonitor TO DISK ...

  4. 收缩SQL Server日志不是那么简单

    收缩SQL Server日志不是那么简单的(翻译)   原文地址:http://rusanu.com/2012/07/27/how-to-shrink-the-sql-server-log/ 说明:本 ...

  5. SQL Server日志文件过大 大日志文件清理方法 不分离数据库

    SQL Server日志文件过大    大日志文件清理方法 ,网上提供了很多分离数据库——〉删除日志文件-〉附加数据库 的方法,此方法风险太大,过程也比较久,有时候也会出现分离不成功的现象.下面的方式 ...

  6. SQL Server 日志和代理的错误日志

    本文介绍的日志不是事务日志,而是SQL Server 日志和代理的错误日志,按照主体把错误日志分为SQL Server.SQL Server Agent.Database Mail,以及 Window ...

  7. sql server 日志文件结构及误操作数据找回

    一. 概述 在sql server 里有数据文件.mdf和日志文件.ldf,日志文件是sqlserver数据库的另一个重要组成部分,日志文件记录了所有事务以及每个事务对数据库所做的修改.为了提高数据库 ...

  8. 解决Sql Server 日志满了,设置收缩

    解决Sql Server 日志满了,设置收缩: --查看文件占用空间 . '文件大小(MB)',* from sysfiles; ALTER DATABASE SpyData SET RECOVERY ...

  9. SQL SERVER 日志写入原理浅析

    昨天看到网上有一个关于SQL SERVER 课件,便随手下载了下来看看主要讲了些什么内容,于是看到了下面两个PPT页面 由于第一张PPT上的内容不太准确(日志文件中没有“日志页”的概念,只有VLF的概 ...

随机推荐

  1. sass中mixin常用的CSS3

    圆角border-radius @mixin rounded($radius){ -webkit-border-radius: $radius; -moz-border-radius: $radius ...

  2. Java--继承和super关键字

    一.Java中方法的参数传递(重点) Java中参数传递都是值传递 Java中的值分两种: 1.如果传递的参数是基本数据类型: 传递的值就是基本数据类型的值. 传递的时候,其实是把基本数据类型的值,复 ...

  3. 331. Verify Preorder Serialization of a Binary Tree

    One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, ...

  4. HDU 5918 KMP/模拟

    Sequence I Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  5. SQLITE LIMIT

    sqlite> create table t_user(userid int,username varchar(20)); sqlite> insert into t_user value ...

  6. 对石家庄铁道大学官网UI设计的分析

    在这一周周一,老师给我们讲了PM,通过对PM的学习,我知道了PM 对项目所有功能的把握, 特别是UI.最差的UI, 体现了团队的组织架构:其次, 体现了产品的内部结构:最好, 体现了用户的自然需求.在 ...

  7. Mvc3.0_笔记

    1.保留文本框中的值:<p>Find @Html.TextBox("searchKey", ViewBag.Filter as string)</p>  这 ...

  8. thinkphp 验证码的使用

    在thinkphp中使用验证码很容易,只要调用thinkphp现有的方法就可以.当然,php的GD库肯定是要开的(就是在php.ini中要加载gd模块). thinkphp 3.2 --------- ...

  9. poj2553 强连通

    题意:定义了一个图的底(bottom),是指在一个图中能够被所有点到达的点,问途中有哪些点是图的底. 首先是同一个强连通分量中的点都能够互相到达,强连通分量中一个点能到达其他点,也必然代表该强连通分量 ...

  10. 【BZOJ1006】【HNOI2008】神奇的国度

    这回没看黄学长的代码,看的是chty的 原题: K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K ...