`

MSSQL如何收缩日志文件

 
阅读更多

 

 

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

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

 

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

1. 截断日志

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

(2)遇到检查点(checkpoint)

wKiom1Zo0n6Bzv_mAABKgjhelIc683.png

 

2. 手动收缩日志文件

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

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

 

 

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

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

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

 

1. 确认恢复模式

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

174856565.png

 

 

2. 完整备份

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

175721601.png

 

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

 

3. 事务日志备份

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

180019793.png

 

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

180532340.png

 

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

 

4. 手动收缩日志文件

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

181442401.png

 

 

三、非官方的操作方法

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

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

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

wKioL1Zo0ZvQclK0AADUgO0ZnCc808.png

 

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

 

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

 

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

分享到:
评论

相关推荐

    缩小数据库日志文件

    这里,通过创建一个临时表`DummyTrans`,并反复插入和删除数据,人为地填充日志空间,然后再通过`BACKUP LOG`和`DBCC SHRINKFILE`命令缩小日志文件。这种方法虽然有效,但需要注意的是,频繁的人工填充和清空日志...

    MYSQL SERVER收缩日志文件实现方法

    MySQL Server的事务日志...总的来说,收缩MySQL Server的日志文件是一项重要的维护任务,它平衡了数据库的性能与安全需求。了解并熟练掌握上述方法,可以帮助数据库管理员有效地管理日志文件,提升系统的整体运行效率。

    解决Mysql收缩事务日志和日志文件过大无法收缩问题

    3. 收缩数据库文件:使用`DBCC SHRINKDATABASE`命令,例如`exec('DBCC SHRINKDATABASE(数据库名) ')`,这将缩小数据库文件大小,包括日志文件。 4. 设置自动收缩:通过`sp_dboption`存储过程,如`exec('EXEC sp_...

    MSsql日志收缩工具

    标题中的“MSsql日志收缩工具”指的是一个专门针对MSSQL数据库日志文件的优化工具,它的主要目的是减小日志文件(.ldf)的大小,以释放磁盘空间并提高系统性能。日志文件通常会随着数据库事务的增加而不断增长,如果...

    mysql用户权限与日志(MySQL用户、访问鉴权、日志记录系统、日志配置查看、InnoDB事务日志等)..docx

    默认情况下,InnoDB会创建两个文件,并且可以在运行时动态增加新的日志文件。 **3、错误日志** 错误日志(error log)记录MySQL服务启动、停止及运行过程中的错误消息和其他警告信息。这些信息有助于诊断问题和...

    处理数据库日志过大问题

    - SQL Server:可以使用`DBCC SHRINKFILE`命令收缩日志文件,或者在完整恢复模式下进行日志备份。 - MySQL:在InnoDB存储引擎中,可以通过`ALTER TABLE ... ENGINE=InnoDB`重置日志,或者调整`innodb_log_file_...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ │ 6_MySQL全量恢复和日志增量恢复.mp4 │ │ 7_xtrabackup全量和增量备份恢复.mp4 │ │ 作业及答案.docx │ │ │ └─MySQL DBA堂命令-mha和备份恢复 │ mysql-master_05-18_10-03-09.log │ mysql-master_05...

    sql200020052008日志清理

    若日志文件过大,可使用`DBCC SHRINKFILE`命令收缩日志文件,但需谨慎操作,以免影响数据库的正常运行。 2. **日志备份与清理** - 日志备份(Log Backup)是清理日志的关键步骤。通过执行事务日志备份,可以截断已...

    MySQL二进制日志(binlog)解析工具

    MySQL二进制日志(binlog)是数据库系统中一种重要的功能,用于记录所有改变数据库状态的事务。这种日志格式是二进制的,它包含了一种持久化数据库更改的方式,这对于数据恢复、主从复制和数据分析具有关键作用。在...

    SQL数据库日志清理工具

    SQL数据库日志清理工具的主要目标就是安全、有效地管理和缩小日志文件的大小。在线清理日志意味着在不影响数据库正常运行的情况下进行操作,这对于生产环境中的数据库尤其重要,因为它避免了服务中断的可能性。 ...

    数据库日志太大处理方案

    在大多数数据库系统中,如SQL Server、Oracle和MySQL,日志文件通常分为两种模式:简单模式和完整模式。在简单模式下,系统仅保留最近的事务信息,一旦事务完成,日志空间就会被重用。而在完整模式下,日志文件会...

    数据库日志已满

    标题“数据库日志已满”通常指的是在使用关系型数据库管理系统(RDBMS)时,数据库的日志文件(如SQL Server的 transaction log 或 MySQL 的 binlog)已经达到了其最大容量,无法再记录新的事务操作。这可能会导致...

    mySQL可视化辅助软件

    MySQL可视化辅助软件是一种提高数据库管理效率的利器,尤其对于初学者和专业开发人员而言,它极大地简化了与MySQL数据库的交互过程。SQLyog Enterprise是这样一款被广泛使用的工具,以其直观的界面和强大的功能而...

    大文件查看工具

    在IT领域,尤其是在系统管理和数据分析过程中,经常需要处理大量的日志文件和SQL脚本文件,这些文件往往体积庞大,传统文本编辑器无法高效地进行查看和分析。标题为"大文件查看工具"的资源,正是为了解决这个问题,...

    数据库删除日志

    - **收缩日志文件**:`DBCC SHRINKFILE`命令可减小日志文件大小,释放空间。 - **重命名删除**:描述中提到的方法可能指的是通过编程方式(如批处理脚本.bat)将日志文件重命名,然后删除扩展名后的部分。这种方法...

    mysql笔记.docx

    在MySQL 5.6之后,可以通过`OPTIMIZE TABLE`命令来收缩独立表空间的大小。 总的来说,这份MySQL笔记提供了关于数据库性能指标、压力测试方法以及存储引擎特性的详细信息,对于数据库管理员和开发者来说是非常有价值...

Global site tag (gtag.js) - Google Analytics