数据库日志文件太大的解决方法及原理
2008-12-10 17:00
260 查看
前几天做一个关于数据表优化的程序,由于数据库里面的字段的关系非常复杂,操作起来比较麻烦,刚用的时候还好,运行时间一长,生成的事务日志很大,占用了10几G,磁盘都快用完了。
到网上搜了一下,方法下面两种:
1.分离数据库,直接删除事务日志文件,再附加数据库,系统会为数据库创建一个新的日志文件
2.清除事务日志并收缩数据库
第一种方法我没用过,也不建议用,原因有两个:分离数据库会造成连接数据库的系统停止运行,如果是生产行业的话会造成停产;事务日志可作数据库故障恢复用,如果删除日志后系统新建出错,则数据库无法恢复。
第二种方法操作方式如下:
a)打开企业管理器,在你要操作的数据库节点右键-> 属性->事务日志
在事务日志文件列表里找出事务日志的文件名。(注意:这里的文件名是“文件名”列中的文件名,不是“位置”列中的实际文件名,这两个文件名可能不一样)
b)打开查询分析器,选择数据库,在查询对话框中输入
BACKUP LOG 数据库名 WITH NO_LOG --截断事务日志
GO
DBCC SHRINKFILE(日志文件的文件名) --收缩日志文件,文件名就是在企业管理器里面找到的那个
GO
执行
查看一下日志文件是否有缩小~~~
原理:
事务日志里面记录了用户对数据库的所有操作,其中有一部是保留的,用作数据库故障恢复,其它都是可删除的,载断事务日志就是将可删除的那部份日志标记为不活动日志(但并没有删除),收缩日志文件就是把日志中不活动的日志清除。
另外,由于日志文件中的数据块是每块100M,所以如果日志文件小于100M,收缩后看文件并不会缩少(相关内容可查询sql server 帮助文档中“收缩事务日志”部份)
到网上搜了一下,方法下面两种:
1.分离数据库,直接删除事务日志文件,再附加数据库,系统会为数据库创建一个新的日志文件
2.清除事务日志并收缩数据库
第一种方法我没用过,也不建议用,原因有两个:分离数据库会造成连接数据库的系统停止运行,如果是生产行业的话会造成停产;事务日志可作数据库故障恢复用,如果删除日志后系统新建出错,则数据库无法恢复。
第二种方法操作方式如下:
a)打开企业管理器,在你要操作的数据库节点右键-> 属性->事务日志
在事务日志文件列表里找出事务日志的文件名。(注意:这里的文件名是“文件名”列中的文件名,不是“位置”列中的实际文件名,这两个文件名可能不一样)
b)打开查询分析器,选择数据库,在查询对话框中输入
BACKUP LOG 数据库名 WITH NO_LOG --截断事务日志
GO
DBCC SHRINKFILE(日志文件的文件名) --收缩日志文件,文件名就是在企业管理器里面找到的那个
GO
执行
查看一下日志文件是否有缩小~~~
原理:
事务日志里面记录了用户对数据库的所有操作,其中有一部是保留的,用作数据库故障恢复,其它都是可删除的,载断事务日志就是将可删除的那部份日志标记为不活动日志(但并没有删除),收缩日志文件就是把日志中不活动的日志清除。
另外,由于日志文件中的数据块是每块100M,所以如果日志文件小于100M,收缩后看文件并不会缩少(相关内容可查询sql server 帮助文档中“收缩事务日志”部份)
相关文章推荐
- 数据库日志文件太大的解决方法及原理
- 数据库日志文件已满,"请备份该数据库的事务日志以释放一些日志空间"解决方法
- 数据库日志文件过大或已满的解决方法
- vs连接数据库时出现“日志文件已满”错误的解决方法
- vs连接数据库时出现“日志文件已满”错误的解决方法
- 数据库日志文件过大或已满的解决方法
- 解决数据库日志文件过满的又一方法
- sqlserver删除日志文件后无法附加数据库的解决方法
- sql server 数据库同步时如果出现 进程未能读取文件 因为发生操作系统错误 5。解决方法:
- 无法打开预编译头文件的解决方法及预编译头原理
- 无数据库日志文件恢复数据库方法两则
- sql server 2005 中文件组的的概念及数据库文件因文件组满而无法写入的数据的解决方法
- sqlserver日志文件太大解决方法
- oracle 删不掉归档日志文件的解决方法
- 数据库 'tempdb' 的日志已满的解决方法
- 减小Sybase ASA数据库的数据和事务日志文件大小及分离的方法
- log4j日志文件乱码问题的解决方法
- SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作……错误:3219……”的解决方法
- MongoDB日志文件过大的解决方法
- 数据库中导出CSV文件与EXCEL文件数据对比可能遇到的问题与解决方法