数据库的日志文件(*.ldf)越来越大,怎么办?

  收缩吧。收缩日志文件的操作真不简单哟,还跟数据库的恢复模式有关啊。

一、“简单恢复模式”时的日志收缩

1. 截断日志

  当数据库的恢复模式为“简单”的时候,日志文件会在以下情况被截断: (1)完整备份

(2)遇到检查点(checkpoint)

2. 手动收缩日志文件

  当日志被截断后,日志文件的内部空间就会标记为“可复用”,因此日志文件就不需要持续增长。关于日志文件空间状态的解释,详见 http://jimshu.blog.51cto.com/3171847/1174474

  手动收缩日志文件的操作可以参考本文稍后的说明。

二、“完整恢复模式”时的日志收缩

  在完整恢复模式下,对数据进行完整备份或者遇到检查点,都不会对日志造成影响。因此,可能会导致日志文件不能被截断,也就是说,这些空间不能被循环使用。于是,日志文件将持续增长,甚至直逼硬盘空间的极限。此时,即使手动收缩日志文件,也不会减小文件空间,因为空间都被占用着。

  注意:“大容量日志恢复模式”与“完整恢复模式”的日志处理方法一致。

1. 确认恢复模式

  以下是使用 SQL Server Management Studio 检查数据库的恢复模式。

2. 完整备份

  日志备份之前,必须做过完整备份。

注意:不要勾选“仅复制备份”选项。“仅复制备份”不会影响日志。

3. 事务日志备份

  做过完整备份之后,可以随时进行事务日志备份。

默认的选项,是备份后截断事务日志。

注意:有很多情况会阻止日志截断,没有备份事务日志只是其中一种情况,也是最常见的情况。

4. 手动收缩日志文件

  做过日志备份之后,日志被截断,大量空间被标记为“可复用”。一般情况下,这时候就可以进行“收缩文件”操作,以将“可复用”的空间从日志文件中移出,从而减小日志文件。

三、非官方的操作方法

1、临时改用简单恢复模式

  临时改为简单恢复模式,然后做一次完整备份,或者运行checkpoint执行检查点。当日志被截断后,再收缩日志文件,最后再改回完整恢复模式。

  甚至,在简单恢复模式时,可以直接修改日志文件的“初始大小”,改成一个很小的数值即可(系统会自动将日志文件收缩到可能的最小值)。

注意:改回完整恢复模式后,请务必立即做一次完整备份。

2、with no_log选项

  在旧版本里,可以使用 BACKUP LOG WITH NO_LOG,或者 WITH TRUNCATE_ONLY。但是,SQL Server 2008 已经删除了这些选项。

3、分离后再附加

  分离这个数据库,然后删除日志文件。然后重新附加这个数据库,SQL Server 就会警告丢失了日志文件,如果忽略这个警告,系统会自动创建一个空的日志文件。 注意:可能会丢失部分数据,详见《丢失日志文件的风险与对策》 http://jimshu.blog.51cto.com/3171847/1341289

SQL2008R2 收缩数据库问题 - 日志文件不变小的更多相关文章

  1. SQL Server中怎么查看每个数据库的日志大小,以及怎么确定数据库的日志文件,怎么用语句收缩日志文件

    一,找到每个数据库的日志文件大小 SQL Server:查看SQL日志文件大小命令:dbcc sqlperf(logspace) DBA 日常管理工作中,很重要一项工作就是监视数据库文件大小,及日志文 ...

  2. MYSQL数据库的日志文件

    日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件.如错误日志文件.二进制日志文件.慢查询日志文件.查询日志文件等. 错误日志 show variables like 'log_error ...

  3. sql server压缩数据库和日志文件

    DBCC SHRINKDATABASE 功能:压缩数据库 用法:DBCC SHRINKDATABASE tb_115sou_com 注意:只有产生许多未使用空间的操作(如截断表或删除表操作)后,执行收 ...

  4. 确认oracle数据库错误日志文件位置

     在命令行里面输入: show parameter background_dump_dest 执行之后会显示一个目录,这个目录就是错误日志目录 在这目录下回有alert*.log 类似这样的文件,这个 ...

  5. 用外部表的方式查询当天数据库alert日志文件

    1环境准备 2查询ORA-开头的错误

  6. DBCC SHRINKFILE收缩日志/收缩数据库/收缩文件

    DBCC SHRINKFILE 收缩相关数据库的指定数据文件或日志文件大小. 语法 DBCC SHRINKFILE    ( { file_name | file_id }        { [ ,t ...

  7. 在sqlserver2005/2008中备份数据库,收缩日志文件

    ---1.先备份数据库(含日志文件) use myhis go backup database myhis to disk='d:\myhis_rzbak' go ---2.设为简单恢复模式 use ...

  8. SQL 收缩数据库日志的几种办法 (2005与2008 略有区别)

    在SQL Server 2000/2005中可以快速压缩日志log文件,通过SQL, 方法一: ---DBTEST 为数据库名,顺序最好别乱.注意:要先截断再清空,最后收缩! backup log D ...

  9. SQL Server 2008收缩日志文件--dbcc shrinkfile参数说明

    原文:SQL Server 2008收缩日志文件--dbcc shrinkfile参数说明 DBCC SHRINKFILE 收缩相关数据库的指定数据文件或日志文件大小. 语法 DBCC SHRINKF ...

随机推荐

  1. Ubuntu16.04安装MySQLdb

    buntu 系统下进行的操作 首先安装了pip工具 1 sudo apt-get install python-pip 然后使用 1 sudo pip install mysql-python   安 ...

  2. linux下不同服务器间数据传输(wget,scp)

    一.wget是Linux下最常用的http/ftp文件下载工具1.wget断点续传,只需要加上-c参数即可,例如:代码:wget-chttp://www.abc.com/abc.zip-Oabc.zi ...

  3. c++ 中 BOOL与bool TRUE与true FALSE与false 区别

    转自:http://blog.chinaunix.net/uid-28458801-id-3941112.html   FALSE/TRUE与false/true的区别 1.FALSE/TRUE与fa ...

  4. CSS 图像透明/不透明

    CSS 图像透明/不透明 使用CSS很容易创建透明的图像. 注意:CSS Opacity属性是W3C的CSS3建议的一部分. 一.示例一:创建一个透明图像 CSS3中属性的透明度是 opacity. ...

  5. jenkins windows执行批处理脚本总是失败

    使用jenkins 在使用编译vc++的一个项目,在执行批处理脚本的时候总是失败, 但是在控制台无论是管理员还是普通用户都能正常编译,jenkins每次都失败,看日志就是调用一个cmd命令直接失败,e ...

  6. HTTP-java访问https资源时,忽略证书信任问题,代码栗子

    java程序在访问https资源时,出现报错 sun.security.validator.ValidatorException: PKIX path building failed: sun.sec ...

  7. Linux命令awk

    1.简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行读入,默认以空格为分隔符将每行切片,切开的部 ...

  8. Mybatis动态SQL——if,where,trim,choose,set.foreach的用法

    知识点:主要介绍mybatis中,动态sql中的if,where,trim,set,foreach的用法 自学谷粒学院mybatis学习视频,参考mybatis官方文档 java包:log4j.jar ...

  9. Codeforces Round #365 (Div. 2) E - Mishka and Divisors(转化成01-背包)

    http://codeforces.com/contest/703/problem/E 题意: 给出n个数和一个k,计算出至少要多少个数相乘才是k的倍数. 思路:这道题目参考了杭电大神的代码http: ...

  10. 在ajax请求下的缓存机制

    1.在服务端加 header(“Cache-Control: no-cache, must-revalidate”);2.在ajax发送请求前加上 anyAjaxObj.setRequestHeade ...