SqlServer事务日志满的解决方案
问题描述:环境说明: ? 错误截屏: ? ? ? ? 解决方案:? ? 这个问题初步看起来是SharePoint_Config和tempdb数据库的日志文件占用过大空间,以致于所在磁盘空间满了。 ?? dbcc shrinkfile (tempdev,10240)????? --调整tempdb的主数据文件大小为10240 MB,可根据需要调整,这个命令不是必须执行的。 ?? dbcc shrinkfile (templog,10240)????? --调整tempdb的事务日志文件大小为10240 MB,可根据需要调整 --对于SharePoint_Config数据库,通常,它的主数据文件的logic name应该是SharePoint_Config,它的事务日志数据文件名是SharePoint_Config_log,也可能不是这个 知道了事务日志文件的logic name,就写命令: 以上能解决当前的问题。 ? 更深的问题为什么事务日志会出现占满空间? ? 通常事务日志文件是这样的文件名: <数据库名>_log.ldf。它有个初始大小。比如500MB。我们对数据库的增删改都会对数据库中数据作出改动。所有的改动都被SqlServer记录到事务日志中了。随着时间的推移,事务日志文件<数据库名>_log.ldf就会慢慢被事务日志占满,当事务日志文件<数据库名>_log.ldf被占满时,SqlServer会根据某些特定策略来处理,一个常见的做法是增加事务日志文件<数据库名>_log.ldf 10%的空间。这避免了事务日志文件<数据库名>_log.ldf满而使数据库事务失败。磁盘空间不是无限的。总有一天事务日志文件<数据库名>_log.ldf就不能再增加体积了。就出现了上面的情况。 ? 什么才是正确的做法? ? 1.? 为事务日志文件<数据库名>_log.ldf分配固定的大小, 不能自动增长。其实针对数据库主文件<数据库名>.mdf也是如此。 ? 2.?制作数据库监视任务,事务日志将满的时候, 自动备份事务日志来减小事务日志占用的空间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |