复制导致数据库日志无法截断收缩

 问题症状:配置了数据库复制功能的数据库,可能存在日志文件巨大且无法进行截断、收缩等操作。

 

 原因:由于某些时候手工执行了数据库发布,没有进行批量处理,导致事务日志一直被标记为使用状态,无法截断日志,无论数据库为何种恢复模型。

解决方法:将所有发布版本标记为已发布,然后收缩数据库。

 

 

 

方法:

sp_repldone 用于事务复制。

sp_repldone 由日志读取器进程用来跟踪哪些事务已分发。

使用 sp_repldone,您可以手动通知服务器事务已复制(即已发送到分发服务器)。它还允许您更改被标记为下一个等待复制的事务。您可以在已复制事务的列表中前后移动。(所有小于或等于该事务的事务都将标记为已分发。)

可以使用 sp_repltrans 或 sp_replcmds 获得所需的参数 xactid 和 xact_seqno。

参数

[ @xactid=] xactid

服务器的最后一个已分发事务的第一个记录的日志序列号 (LSN)。xactid 的数据类型为 binary(10),无默认值。

[ @xact_seqno=] xact_seqno

服务器的最后一个已分发事务的最后一个记录的 LSN。xact_seqno 的数据类型为 binary(10),无默认值。

[ @numtrans=] numtrans

已分发的事务数。numtrans 的数据类型为 int,无默认值。

[ @time=] time

分发最后一批事务所需的毫秒数(如果提供)。time 的数据类型为 int,无默认值。

[ @reset=] reset

重置状态。reset 的数据类型为 int,无默认值。如果为 1,则日志中所有复制的事务将标记为已分发。如果为 0,则事务日志将重置为第一个复制的事务,并且不将任何已复制的事务标记为已分发。只有当 xactid 和 xact_seqno 都为 NULL 时,reset 才有效。

示例:
EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0,     @time = 0, @reset = 1
当 xactid 为 NULL,xact_seqno 为 NULL,并且 reset 为 1 时,日志中的所有复制事务都标记为已分发。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值