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

Posted 飛火流星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库日志文件太大如何处理相关的知识,希望对你有一定的参考价值。

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

由于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

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

 

以上是关于数据库日志文件太大如何处理的主要内容,如果未能解决你的问题,请参考以下文章

Unity物理系统-物理材质-Collider碰撞体的弹力不够大如何处理

片段如何处理触摸?

oracle 数据文件太大 太多如何处理 (具体数据有几十个oracle 用户,表空间文件有上百G)

在片段之间切换时如何处理相机?

如何处理片段和活动中的后压

数据库日志已满,如何处理?