加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

MSSQL数据库细节——ldf日志过大无法收缩问题

发布时间:2022-10-28 14:31:30 所属栏目:MsSql教程 来源:互联网
导读: 昨天遇到一个SQL server日志文件太大,收缩报错的问题在此记录一下。
问题的起因是,执行SQL的时候出现下面的提示:

1、、查看一下数据库文件所在的磁盘,已经爆掉了。查看数据库日志文件

昨天遇到一个SQL server日志文件太大,收缩报错的问题在此记录一下。

问题的起因是,执行SQL的时候出现下面的提示:

1、、查看一下数据库文件所在的磁盘,已经爆掉了。查看数据库日志文件大小mssql数据库日志,有70多个G,第一反应是先做数据库日志收缩,依然报错。

2、百度了一下,大部分帖子都说是CDC导致的,但是我的服务器没有使用CDC,排除了这种可能

3、考虑到收缩日志可能需要一定的空间,移出磁盘部分文件,再进行收缩,此时不再提示错误(毕竟磁盘未满),但是收缩没有生效,空间未改变(数据库恢复模式确认为简单)

4、查看数据库和日志的状态

数据库:

select name,log_reuse_wait_desc from sys.databases where

日志重用的等待状态是replication状态

--删除数据库中复制对象

EXEC sp_removedbreplication TESTB

再次查询依然是replication状态

查询DBCC loginfo()

发现所有日志的状态都是status=2,即活动的状态,这是因为项目中每次批量写入数据的过程都是异常中断结束,导致所产生的日志都是活跃的状态。

遇到以上情况,直接对数据库做一次完整备份,之后这些日志的状态会自动更新为可以重用的状态,就可以直接收缩掉了。

5、其他场景

将日志中所有复制的事务将标记为已分发有时候也可以解决日志无法收缩问题

EXEC sp_repldone @xactid = NULL,@xact_segno = NULL,@numtrans = 0,@time = 0,@reset = 1

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!