数据库事务jeeps日志已满,原因为replication

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库事务jeeps日志已满,原因为replication相关的知识,希望对你有一定的参考价值。

参考技术A SQLServer中开启CDC之后,在某些情况下会导致事务日志空间被占满的现象为:
在执行增删改语句(产生事务日志)的过程中提示,The transaction log for database '***' is full due to 'REPLICATION'(数据库“***”的事务日志已满,原因为“REPLICATION”).
CDC以及复制的基本原理粗略地讲,对于日志的使用步骤如下:
1,每当基础表(开启了CDC或者replication的表)产生事务性操作(增删改)之后,对应的事务日志写入日志文件,
2,此时的日志被状态被标记为Replication,也即处于待复制状态,这个活动状态跟数据库的还原模式无关,即便是简单还原模式,
3,然后有后台进程来读取这个日志,根据事务日志的内存写入目标表,
这个目标对于cdc来说是记录数据变化的系统表,
对于replication来说是写入distribution这个库
4,步骤3完成之后,事务日志被标记为正常状态,如果是简单还原模式,被后台进程解析过的事务日志被截断,可以重用
如果上述中间的第三个步骤出现问题,也即后台进程无法解析日志后释放可用的日志空间,再次往数据库中写入操作,就会出现:数据库“TestDB”的事务日志已满,原因为“REPLICATION”的情况

以上是关于数据库事务jeeps日志已满,原因为replication的主要内容,如果未能解决你的问题,请参考以下文章

事务日志已满,原因为“ACTIVE_TRANSACTION”

事务日志已满,原因为“ACTIVE_TRANSACTION”

SQL Server事务日志被填满的原因是啥

数据库中事务日志已满的潜在原因和解决方案[关闭]

在每日作业计划的某一天,我收到错误数据库 dbname 的事务日志已满,原因是“ACTIVE_TRANSACTION”

数据库的事务日志已满。若要查明无法重用日志中的空间的原因 ,请参阅sys.databases 中的 log_reuse_wait_desc 列