sqlserver 事务日志已满的几种解决方案

说白了,收缩事务日志是个技术活,但操作不当容易出问题。
这事复杂在几个关键点上,先说最重要的:恢复模式必须配合操作。
去年我们跑的那个项目,直接改成简单模式收缩日志,结果一半数据没了,因为日志没备份;另外一点,收缩操作有个默认值1 MB,但如果你数据库日志3 000量级,那得跑半天,建议分批操作;还有个细节挺关键的,自动收缩虽然省心,但日志突然断崖式缩减可能让应用卡死,我一开始也以为设置成自动就好,后来发现不对,得加监控。
等等,还有个事,分离附加数据库后别忘删.ldf文件,不然下次附加还报警。
建议你手动写个脚本,每周跑一次收缩,别完全依赖自动功能。

Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log 下的文件好大啊,好几个G,能删除吗?

记得上次在凌晨三点调试系统,服务器突然爆出错误日志满了的警告。
当时我手忙脚乱,赶紧查了手册,发现用master数据库执行sp_cycle_errorlog确实能解决问题。
我敲下命令,看着日志文件后缀从.log变成.1 ,心里才踏实。
不过话说回来,每次重启服务器都意味着又要开始新一轮的循环,这7 个文件的限制真是够折腾的。
等等,还有个事,我突然想到,如果日志文件太大,直接删除会不会更省事?不过这得查查权限设置才行。

SQL SERVER数据库清空日志图文教程分享

2 02 2 年,我在某个城市,遇到了一个SQLSERVER数据库日志文件太大的问题。
当时我懵了,不知道该怎么办。
后来我才知道,可以使用专业工具来解决这个问题,比如“SqlServer日志清除专家”,它支持多种版本,对我来说是个不错的选择。

不过,我手头有个SQLSERVER2 005 版本的数据库,那就得手动清空日志了。
首先,我备份了数据库,然后关闭了连接数据库的程序,比如IIS。
接着,我找到数据库所在的硬盘位置,备份了.mdf文件,把.ldf文件给重命名了。
当时心里还挺紧张的,生怕出了什么岔子。

然后,我把备份的.mdf文件附加到SQLSERVER上,系统提示找不到.ldf文件,我就按提示操作,没多想。
附加成功后,系统自动生成了一个新ldf文件,我心里松了一口气。

后来,我发现还有个SQLSERVER2 008 及更高版本的日志清理方法,就是设置数据库为简单恢复模式,然后使用DBCCSHRINKFILE命令收缩日志文件,最后再恢复数据库为完全恢复模式。
这步操作比较复杂,我花了点时间才弄明白。

总的来说,我学到了不少,比如定期备份很重要,手动操作要谨慎,还有要注意系统碎片问题。
通过这些方法,我成功解决了日志文件过大的问题,心里挺美的。