解决Mysql收缩事务日志和日志文件过大无法收缩问
解决MySQL事务日志和日志文件过大问题的策略指南
一、针对MS SQL SERVER 2005的解决方案
为了解决事务日志过大的问题,你可以采取以下步骤:
1. 清空日志:使用命令`exec('DUMP TRANSACTION 数据库名 WITH NO_LOG')`来清空数据库的事务日志。
2. 截断事务日志:通过`exec('BACKUP LOG 数据库名 WITH NO_LOG')`命令来备份并截断事务日志。
3. 收缩数据库文件:使用`exec('DBCC SHRINKDATABASE(数据库名)')`来收缩数据库文件。需要注意的是,如果不进行压缩,数据库的文件大小可能不会减小。
4. 设置自动收缩:通过执行`exec('EXEC sp_dboption 数据库名, autoshrink, TRUE')`来设置数据库的自动收缩功能。
二、针对MS SQL SERVER 2008、2008r2、2012和2016的解决方案
在SQL Server 2008及之后的版本中,清除日志需要在简单模式下进行。以下是详细的步骤:
1. 将数据库设置为简单恢复模式:`USE [master] GO ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT GO`。
2. 清除和缩小日志文件:使用命令`DBCC SHRINKFILE (N'crm50sp1_log', 11, TRUNCATEONLY)`来缩小日志文件(crm50sp1_log是数据库日志文件的逻辑名)。
3. 将数据库恢复为完全模式:`USE [master] GO ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT GO`。
三、处理日志文件异常大且无法收缩的问题
如果遇到日志文件异常大且无法收缩的情况,可以按照以下步骤操作:
1. 检查是否有未提交或回滚的事务。执行DBCC OPENTRAN命令来查看是否有早期开始的事务。如果有,可以通过杀掉相关进程或重启SQL服务来解决。
2. 如果没有长时间未关闭的事务,可以先备份数据库,然后尝试备份日志,并使用`DBCC SHRINKFILE`命令来缩小日志文件。
3. 要找到日志文件的逻辑名称,可以使用SQL查询:`USE erp数据库 go SELECT [name] FROM sys.database_files WHERE type_desc='LOG'`。
以上是关于解决MySQL收缩事务日志和日志文件过大问题的策略指南。希望这些信息对你有所帮助。如果你有任何疑问或需要进一步的帮助,请随时联系我。感谢大家对狼蚁SEO网站的支持!
编程语言
- 解决Mysql收缩事务日志和日志文件过大无法收缩问
- php写app用的框架整理
- PHP PDOStatement--fetchObject讲解
- javascript中slice(),splice(),split(),substring(),substr()使用
- 新浪SAE云平台下使用codeigniter的数据库配置
- vue组件name的作用小结
- AngularJS实现的根据数量与单价计算总价功能示例
- 解决laravel上传图片之后,目录有图片,但是访问不
- PHP屏蔽关键字实现方法
- SQL 统计一个数据库中所有表记录的数量
- js获取所有checkbox的值的简单实例
- 数组Array的一些方法(总结)
- 更改BootStrap popover的默认样式及popover简单用法
- MySQL中Union子句不支持order by的解决方法
- php可应用于面包屑导航的递归寻找家谱树实现方
- 详解WordPress中过滤链接与过滤SQL语句的方法