问题描述:
数据库的事务日志已满,起因为"LOG_BACKUP"。
问题截图:
解决方法:
1).选择数据库–属性—选项—恢复模式–选择简单。
2).收缩数据库后,再调回完整。
1 USE[master] 2 GO 3 ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT 4 GO 5 ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE --简单模式 6 GO 7 USE 要清理的数据库名称 8 GO 9 DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY) --设置压缩后的日志大小为2M,可以自行指定 10 GO 11 USE[master] 12 GO 13 ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT 14 GO 15 ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL --还原为完全模式 16 GO
数据库XXX的事务日志已满,起因为“LOG_BACKUP”
客户的管理系统数据库用的是SQL2012,看来是需要压缩一下数据库了,但是当我压缩数据库的时候竟然报错了,应该是日志太大了。
那么,解决办法就有了!
第一步,把数据库的恢复模式设置为“简单”,具体操作:
右键你的数据库,选择“属性”,然后在“选项”里面把“恢复模式”设置为“简单”,然后“确定”。
第二步,收缩数据库,具体操作:
右键你的数据库,选择“任务”——“收缩”——“数据库”,在弹出来的面板里直接点“确定”即可。
第三步,把数据库的恢复模式设置为“完整”,具体操作:
右键你的数据库,选择“属性”,然后在“选项”里面把“恢复模式”设置为“完整”,然后“确定”。
当以上方法操作全部报错时:
首先到服务中,将SQL Server (MSSQLSERVER)服务暂停,然后找到数据库的mdf和ldf文件,复制一份到其他磁盘(不暂停sql服务是无法复制的),然后直接删除ldf文件,启动sql服务;
如何停止sql server服务
1、首先在电脑桌面中,鼠标右键点击计算机-管理,如下图所示。
2、然后在打开的管理窗口中,点击左侧栏中的服务和应用程序,如下图所示。
3、接着在打开的服务和应用程序页面中,点击SQL SERVER配置管理器 ,如下图所示。
4、最后点击SQL SERVER服务后,右键点击选择停止 ,如下图所示就完成了。
此时登陆数据库会发现该数据库已被挂起,那么执行下面的命令:其中test为数据库名
USE master
GO
ALTER DATABASE test SET SINGLE_USER
GO
ALTER DATABASE test SET EMERGENCY
GO
DBCC CHECKDB(test,REPAIR_ALLOW_DATA_LOSS)
go
ALTER DATABASE test SET ONLINE
GO
ALTER DATABASE test SET MULTI_USER
GO
执行完成后数据库即可正常使用,而且mdf日志文件也被清理了