事务日志已满的解决方法

上传人:hs****ma 文档编号:502283208 上传时间:2022-12-05 格式:DOCX 页数:2 大小:11.95KB
返回 下载 相关 举报
事务日志已满的解决方法_第1页
第1页 / 共2页
事务日志已满的解决方法_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《事务日志已满的解决方法》由会员分享,可在线阅读,更多相关《事务日志已满的解决方法(2页珍藏版)》请在金锄头文库上搜索。

1、1.清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志: BACKUP LOG 库 名 WITH NO_LOG 3. 收缩数据库文件(如果不压缩 ,数据库的文件不会减小 企业管理器-右键你要压 缩的数据库-所有任务-收缩数据库-收缩文件-选择日志文件-在收缩方式里选择收缩至XXM,这里 会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 -选择数据文件-在收缩方式里选 择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用 SQL语句来完成-收缩数据库DBCC SHRINKDATABASE(库名)-收缩指定数据

2、文件,1是文件号, 可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(I) 4.为了最大化的缩小日志文 件(如果是sql 7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器-服务器-数据库-右键 -分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器-服务器-数据库-右键-附 加数据库此法将生成新的LOG,大小只有500多K或用代码:下面的示例分离pubs,然后 将pubs中的一个文件附加到当前服务器。a.分离EXEC sp_detach_db dbname =库名b.删除 日志文件 c.再附加 EXEC sp_at

3、tach_single_file_db dbname =库名,physname = c:Program FilesMicrosoft SQL ServerMSSQLData 库名.mdf 5.为了以后能自 动收缩,做如下设置: 企业管理器-服务器-右键数据库-属性-选项-选择自动收缩 -SQL 语句设置 方式: EXEC sp_dboption 库名, autoshrink, TRUE 6 .如果想以后不让它日志增长得太大 企业管理 器-服务器-右键数据库-属性-事务日志-将文件增长限制为xM(x是你允许的最大数据文件大 小)-SQL语句的设置方式:alter database库名modify

4、 file(name=逻辑文件 名 ,maxsize=20) 2MSSQL2005 日志的收缩1 右键在清除日志的数据库,如TestDB”,点击新建查询(Q)2 输入以下SQL语句,其中TestDB”是数据库名称DUMP TRANSACTION TestDB WITH NO_LOG 3 .执行该 SQL,成功后继续以下操作4 右键该数据库节点,点击任务(T)- 收缩(S)- 文件(F)5 在弹出的“收缩文件”对话框中,将文件类型(T) ”选为日志”,将收缩操作”选中在释放未使 用的空间前重新组织页( O) ”6 在将文件收缩到(K) ”文本框中输入后面提示的最小大小的数值,点击确定即可。忽然发

5、现原来空间急剧减少的原因是MSSQL2005的errorlog,而不是database的log文件 太囧了 现在补上清楚 MSSQL2005 的 errorlog 的办法。sql2005 的 error 一共有 6 个,从 errorlog,errlog.1 一直到 errorlog.6 貌似是 7 个。执行一次EXEC sp_cycle_errorlog就会产生一个新的errorlog,然后把errorlog.6给删掉。就是先进先出(队列类似的情况)这样循环 6 次就可以把 errorlog 都刷新一遍。老的那个就被删掉了。 3EXEC sp_msforeachdb command1=NPR

6、INT RAISERROR( 处理数据库: 数据库名称 ,10,1) WITH NOWAITPRINT - 截断日志BACKUP LOG 数据库名称 WITH NO_LOG- 收缩文件USE 数据库名称DECLARE tb CURSOR LOCALFOR SELECT NDBCC SHRINKFILE(+RTRIM(fileid)+N)FROM dbo.sysfilesDECLARE s nvarchar(4000)OPEN tbFETCH tb INTO sWHILE FETCH_STATUS=0BEGINEXEC(s)FETCH tb INTO sEND CLOSE tbDEALLOCATE tb- Auto ShrinkIF LOWER(“ 数据库名称 ”)not in(master,tempdb)EXEC sp_dboption “ 数据库名称,“autoshrink,TRUE- 设置数据库恢复模型为 SIMPLEIF LOWER(“ 数据库名称 “) tempdbEXEC(NALTER DATABASE 数据库名称 SET RECOVERY SIMPLE)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号