关于sql server 2012日志变得超大的删除解决办法

首先说说,这个sql server机制其实挺严谨,他的原意是---如果你不做日志备份,就不给你删日志,然后也有脚本给你回收日志空间,算是挺安全也方便实用了.

看起来是挺合理的,但是碰到缺心眼的开发或使用者,日志一天天的胀大,而又忘记回收的话,那就悲催了,这个时候你就不可能备份了,因为硬盘空间不够用啊,不能备份也就不能删日志,就成了个死循环了.

我这边就遇到这种事,日志被撑到170G了,硬盘总共才200G空间,怎么搞好呢?

最后经过百度和google两位幕后大师傅的指点,得到了下面的方法,仅供参考,因为也可能有些情况不太一致.

首先我们看看日志当前的状态,

DBCC LOGINFO(test9572)

可以看到status=0的日志,代表已经备份到磁盘的日志文件;而status=2的日志还没有备份。当收缩日志文件时,收缩掉的空间其实就是 status=0的空间,如果日志物理文件无法减小,这里一定能看到非常多status=2的记录。

然后我们看看日志截断延迟原因,

SELECT [name] ,[database_id] ,[log_reuse_wait] ,[log_reuse_wait_desc] FROM [sys].[databases];

各种原因及解释如下:

log_reuse_wait_desc 值

NOTHING    当前有一个或多个可重复使用的虚拟日志文件。

CHECKPOINT    自上次日志截断之后,尚未出现检查点,或者日志头部尚未跨一个虚拟日志文件移动(所有恢复模式)。

这是日志截断延迟的常见原因。

LOG_BACKUP    需要日志备份,以将日志的头部前移(仅适用于完整恢复模式或大容量日志恢复模式)。

注意:日志备份不会妨碍截断。

完成日志备份后,日志的头部将前移,一些日志空间可能变为可重复使用。

ACTIVE_BACKUP_OR_RESTORE    数据备份或还原正在进行(所有恢复模式)。数据备份与活动事务的运行方式相同。数据备份在运行时,将阻止截断。

ACTIVE_TRANSACTION    事务处于活动状态(所有恢复模式)。一个长时间运行的事务可能存在于日志备份的开头。在这种情况下,可能需要进行另一个日志备份才能释放空间。

看完了状态,我的问题也是这个LOG_BACKUP,日志没备份导致,也就是开头说的死循环,因为硬盘空间不够用啊,不能备份也就不能删日志,就成了个死循环了

总有解决办法,办法的原理是在简单模式下进行,等清除动作完毕再调回到完全模式,下面来看:

首先,我们要确认日志的文件名,因为硬盘上的文件名不一定是数据字典里面的文件名,所以要确认下

USE test9572
GO
SELECT file_id,name FROM sys.database_files;
GO

然后就可以准备删了:

USE [test9572]
GO
ALTER DATABASE test9572 SET RECOVERY SIMPLE WITH NO_WAIT
GO
--简单模式
ALTER DATABASE test9572 SET RECOVERY SIMPLE 
GO
USE test9572
GO
DBCC SHRINKFILE (N‘test9572_log‘ , 11, TRUNCATEONLY) 
GO
USE [test9572]
GO
ALTER DATABASE test9572 SET RECOVERY FULL WITH NO_WAIT
GO
--还原为完全模式
ALTER DATABASE test9572 SET RECOVERY FULL 
GO

删完可以看看硬盘空间,一切都变好了,

时间: 2024-11-03 21:50:02

关于sql server 2012日志变得超大的删除解决办法的相关文章

sql server 2012提示:评估期已过 的解决办法 附序列号

sql server 2012提示评估期已过的解决方法: 第一步:进入SQL2012配置工具中的安装中心. 第二步:再进入左侧维护选项界面,然后选择选择版本升级. 第三步:进入输入产品密钥界面,输入相应版本密钥. 第四步:按照默认一直点下一步,遇到升级按钮,点升级直到升级完毕. sql server 2012 版本序列号如下: MICROSOFT SQL SERVER 2012 企业核心版激活码序列号: FH666-Y346V-7XFQ3-V69JM-RHW28 MICROSOFT SQL SE

sql server 2012提示评估期已过的解决办法 附序列号

sql server 2012提示评估期已过的解决方法: 第一步:进入SQL2012配置工具中的安装中心. 第二步:再进入左侧维护选项界面,然后选择选择版本升级. 第三步:进入输入产品密钥界面,输入相应版本密钥. 第四步:按照默认一直点下一步,遇到升级按钮,点升级直到升级完毕. sql server 2012 版本序列号如下: MICROSOFT SQL SERVER 2012 标准版激活码序列号: YFC4R-BRRWB-TVP9Y-6WJQ9-MCJQ7 MICROSOFT SQL SERV

SQL Server 2008 R2评估期已过的解决办法

某天打开SQL Server 2008 R2数据库,弹出如图一所示窗口. 图一 在网上查找了一些方法(链接1.链接2)结果都没有成功.这些方法都是通过图二的方式进入SQL2008配置工具中的安装中心. 图二 后面,我尝试着从安装程序进入SQL2008配置工具中的安装中心再进入维护界面,选择版本升级,如图三所示. 图三 检查升级规则,出现如图四所示的提示,重启计算机.此时安装提示重启计算机并重复上述操作即可.尽量不要只重启SQLServer服务 图四 在如图五中选择企业版并输入企业版序列号Ente

关于sql server 代理(已禁用代理xp)解决办法

关于sql server 代理(已禁用代理xp)解决办法 sp_configure 'show advanced options', 1; GO RECONFIGURE WITH OVERRIDE; GO sp_configure 'Agent XPs', 1; GO RECONFIGURE WITH OVERRIDE GO sp_configure 'show advanced options', 1;GORECONFIGURE WITH OVERRIDE; GOsp_configure 'A

sql server 2012日志文件超大,清除日志的处理过程

有一个项目使用了sql server2012版本的数据库,一开始可能没有注意到日志文件,使得日志文件越来越大,当使用sql2008的收缩文件的方法进行操作时,问题出现了. DUMP TRANSACTION BigData WITH NO_LOG BACKUP LOG BigData WITH NO_LOG 使用上面的方法并不能解决问题,因为2012已经不支持transaction了. 通过百度搜索了大量前人的解决方式,最终找到一个解决的办法: 给出原办法出处:http://www.itpub.n

Sql Server 2008 数据库附加失败提示9004错误解决办法

附加数据库 对于 服务器“WSS_Content”失败.  (Microsoft.SqlServer.Smo)执行 Transact-SQL 语句或批处理时发生了异常. (Microsoft.SqlServer.ConnectionInfo)处理数据库 'WSS_Content' 的日志时出错.如果可能,请从备份还原.如果没有可用备份,可能需要重新生成日志. 无法打开新数据库 'WSS_Content'.CREATE DATABASE 中止. (Microsoft SQL Server,错误:

SQL Server 数据库没有有效所有者的三种解决办法

问题:     开发的过程中,操作系统出了问题,决定重装系统.但是没有将SQL Server中的数据库文件分离出来,直接将系统格了.在新系统数据库中附加了数据库文件,一切还算正常,但当打开数据库关系图的时候出现了问题,如下图所示: 解决办法:(三种) 1.右键你的数据库名→属性→文件→所有者→sa;(该方法是从网上找到的,可能不成功) 2.设置兼容级别为90(2005为90,2000为80) (1)代码: USE [master] GO EXEC dbo.sp_dbcmptlevel @dbna

sql server 数据库忘记sa账户密码/ 无管理员账户解决办法

一.计算机超级管理员账户有数据库的管理员权限 用管理员账户登录数据库,直接修改sa账户密码即可. 二.数据库中没有管理员权限的账户 SQL Server 2005/2008提供了针对该情况的更好的灾难恢复方法,无需侵入master数据库,不会对master数据库中的对象和数据(例如登陆帐号,证书等)造成损坏.Windows管理员组的成员现在当SQL Server以单用户模式启动(另外一个名称为维护模式)的情况下对SQL Server有了访问权限. 通过使用单用户模式,SQL Server 200

Microsoft SQL Server 2008 R2附加数据库报错5120解决办法

Microsoft SQL Server 2008 R2数据库附加报错5120,是权限的问题解决办法:邮件数据库文件的属性选中Authenticated Users 然后选中编辑把完全控制勾选上 单击确定,然后就可以附加数据库了 ! 若有疑问可以联系我www.jiangyong.net.cn,里面有我的QQ