Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 756|回复: 0

sqlserver日志文件太大解决方法

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-8-28 16:25:44 | 显示全部楼层 |阅读模式

    SQL Server 的事务日志意外增大或充满的处理方法

    事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf。
    在 SQL Server 7.0 和 SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展。
    一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发。
    然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满。通常,在事务日志文件占尽可用磁盘空间且不能再扩展时,您将收到如下错误消息:
    Error:9002, Severity:17, State:2
    The log file for database '%.*ls' is full.
    除了出现此错误消息之外,SQL Server 还可能因为缺少事务日志扩展空间而将数据库标记为 SUSPECT。有关如何从此情形中恢复的其他信息,请参见 SQL Server 联机帮助中的“磁盘空间不足”主题。

    另外,事务日志扩展可能导致下列情形:
    · 非常大的事务日志文件。
    · 事务可能会失败并可能开始回滚。
    · 事务可能会用很长时间才能完成。
    · 可能发生性能问题。
    · 可能发生阻塞现象。

    原因
    事务日志扩展可能由于以下原因或情形而发生:
    · 未提交的事务
    · 非常大的事务
    · 操作:DBCC DBREINDEX 和 CREATE INDEX
    · 在从事务日志备份还原时
    · 客户端应用程序不处理所有结果
    · 查询在事务日志完成扩展之前超时,您收到假的“Log Full”错误消息
    · 未复制的事务

    解决方法
    日志文件满而造成SQL数据库无法写入文件时,可用两种方法:
    一种方法:清空日志。
    1.打开查询分析器,输入命令
    DUMP TRANSACTION 数据库名 WITH NO_LOG
    2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

    另一种方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。
    1: 删除LOG
    分离数据库 企业管理器->服务器->数据库->右键->分离数据库
    2:删除LOG文件
    附加数据库 企业管理器->服务器->数据库->右键->附加数据库
    此法生成新的LOG,大小只有500多K。

    注意:建议使用第一种方法。

    如果以后,不想要它变大。
    SQL2000下使用:
    在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
    或用SQL语句:
    alter database 数据库名 set recovery simple


    另外,如上图中数据库属性有两个选项,与事务日志的增长有关:
    Truncate log on checkpoint
    (此选项用于SQL7.0,SQL 2000中即故障恢复模型选择为简单模型)
    当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True
    Auto shrink
    定 期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将 Truncate log on checkpoint 选项设为True 时才能进行。


    注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。

     

    摘自: http://www.bokesun.com/blogger/laobai/archives/2009/70717.shtml

     

    P.S. 

    The shrinking of  TL process is changed in SQL Server 2008. You just need to

    (a) set the database to simple recovery model

    (b) Shirnk the file

    (c) Set back to Full (If required). ie. If you are not taking TL backup let it be in Simple recovery model only

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-17 09:19 , Processed in 0.064946 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表