前两天一大早就收到磁盘被占用满了,应用无法正常使用。
登录服务器查看到是因为事务日志导致磁盘爆满
找到原因开始清理事务日志,执行了下面语句结果没有生效日志文件还是没有缩小,我就重启了SQL服务想着重启后来执行清理SQL,结果就搞出了大事数据库显示在恢复中。
USE 数据库名
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE --简单模式
GO
USE 数据库名
GO
DBCC SHRINKFILE (N'数据库逻辑文件名称_log' , 11, TRUNCATEONLY)
GO
USE 数据库名
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 数据库名 SET RECOVERY FULL --还原为完全模式
GO
这个时候是表面镇静,内心慌的一批MD要是数据库坏了就麻烦了。
当数据库显示在恢复中时不要操作等待数据库恢复正常,恢复过程时间较长。
但我的情况在数据库恢复正常后还是不能使用。我就使用终极绝招了附加数据库操作。
附加数据库时间取决于你的数据库大小,我的数据库有1T的数据库等一个半小时左右。
1.停用SQL Server服务
2.将数据库的.mdf和.ldf文件更名
3.启用SQL Server服务
4.右键删除数据库
5.将更名的.mdf和.ldf文件名称改回原来的数据库文件名。
6.在管理工具中重新附加数据库,附加成功后故障修复。
数据库附加成功后,最后再执行事务日志清理任务。
到此数据库就恢复正常了。