The process could not execute 'sp_repldone/sp_replcounters' on 'ServerName'

昨天发现发布服务器S(SQL Server 2008 R2),出现大量如下错误

错误细节如下所示:

Date 10/16/2013 4:04:14 PM

Log SQL Server (Current - 10/16/2013 3:44:00 PM)

Source spid52

Message

Replication-Replication Transaction-Log Reader Subsystem: agent xxxxx failed. The process could not execute 'sp_repldone/sp_replcounters' on ' ServerName'.

 

我在发布服务器S上启用Launch Replication Monitor(复制监视器),查看一些具体情况,如下所示

 

Error messages:

The process could not execute 'sp_repldone/sp_replcounters' on 'ServerName'. (Source: MSSQL_REPL, Error number: MSSQL_REPL20011)

Get help: http://help/MSSQL_REPL20011

The specified LSN {00000000:00000000:0000} for repldone log scan occurs before the current start of replication in the log {000988e1:0000577e:00b4}. (Source: MSSQLServer, Error number: 18768)

Get help: http://help/18768

The process could not set the last distributed transaction. (Source: MSSQL_REPL, Error number: MSSQL_REPL22017)

Get help: http://help/MSSQL_REPL22017

The process could not execute 'sp_repldone/sp_replcounters' on 'ServerName'. (Source: MSSQL_REPL, Error number: MSSQL_REPL22037)

Get help: http://help/MSSQL_REPL22037

 

另外发现Log  Reader Agent(日志读取器代理)呈现错误状态,首先尝试通过关闭Log Reader Agent(日志读取器代理),然后重启Log Reader Agent(日志读取器代理),Log Reader Agent(日志读取器代理)依然启动不了,重启SQL Server Agent(SQL Server 代理),问题仍然存在,检查msrepl_commands记录数,当时记录数是761490,可以排除颁发库的 msrepl_commands 表里面的数据太多,导致清理花费太长时间的原因。

SELECT COUNT(1) FROM msrepl_commands

于是执行下面SQL:

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

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

exec sp_replflush 

 SQL执行完成后,日志读取器代理成功启动。重启初始化订阅后,问题解决。

下面是MSDN关于sp_repflush 和sp_repldone的解释:

 



 

sp_replflush 用于事务复制。

为了提高效率,项目定义存储在缓存中。只要修改或删除项目定义,其他复制存储过程都可使用 sp_replflush

只有一个客户端连接有权访问给定数据库的日志读取器。如果某个客户端有权访问数据库的日志读取器,则执行 sp_replflush 将导致该客户端释放其访问权。这样一来,其他客户端就能使用 sp_replcmdssp_replshowcmds 扫描事务日志了

 



 

sp_repldone 用于事务复制。

 



 

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

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

可以使用 sp_repltranssp_replcmds 获得所需的参数 xactidxact_seqno

 



 

参考资料:

http://www.sqlservercentral.com/Forums/Topic105590-7-1.aspx#bm892474

时间: 2024-08-03 11:20:01

The process could not execute 'sp_repldone/sp_replcounters' on 'ServerName'的相关文章

The process could not execute 'sp_repldone/sp_replcounters' on 'ServerName'

昨天发现发布服务器S(SQL Server 2008 R2),出现大量如下错误 错误细节如下所示: Date 10/16/2013 4:04:14 PM Log SQL Server (Current - 10/16/2013 3:44:00 PM) Source spid52 Message Replication-Replication Transaction-Log Reader Subsystem: agent xxxxx failed. The process could not ex

信息- VBScript 运行时错误 类型不匹配: '[string: ""]' line 12

问题描述 VBScript 运行时错误 类型不匹配: '[string: ""]' line 12 <%Option Explicit%> <%dim cartstrcartstr = getCartFromCookie()if (cartstr=NULL or cartstr ="""") then response.redirect ""Cart.asp"" response.ende

webservice-axis2 java调用.net出现Unexpected character &amp;amp;#39;I&amp;amp;#39; (code 73) in prolog; expected &amp;amp;#39;&amp;amp;lt;&amp;amp;#39;

问题描述 axis2 java调用.net出现Unexpected character 'I' (code 73) in prolog; expected '<' 服务端暴露的接口有三个方法,其中一个正常,另外两个调用报以下错误,求人解答 org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'I' (code 73) in prolog; expected '

android studio 报&amp;amp;#39;jdk1.8\bin\java.exe&amp;amp;#39;&amp;amp;#39;...

问题描述 android studio 报'jdk1.8binjava.exe''... FAILURE: Build failed with an exception. What went wrong: run的时候报错: Execution failed for task ':xxxxxxxx'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Proces

编程-if(ch!=&amp;amp;#39;32&amp;amp;#39;&amp;amp;amp;&amp;amp;amp;ch!=&amp;amp;#39; &amp;amp;#39;)这个起什么作用,怎么感觉有没有这句都一样

问题描述 if(ch!='32'&&ch!=' ')这个起什么作用,怎么感觉有没有这句都一样 if(ch!=' ')这个起什么作用,我觉得有没有这句输出结果都一样,可书上为什么这样写?还是应该改一改记事本里的内容? 解决方案 大概是因为...或者说就是数据太简单了,没有达到判断的条件.你多试些试试. 解决方案二: TCP/IP 详解 卷1 ch12 Broadcasting and Multicasting 解决方案三: 不同操作系统,它的换行符不一样的 解决方案四: fseet(fp0S

编程-关于 &amp;amp;quot;moveElement(&amp;amp;#39;&amp;amp;quot;+elementID+&amp;amp;quot;&amp;amp;#39;,&amp;amp;quot; 中引号的问题

问题描述 关于 "moveElement('"+elementID+"'," 中引号的问题 这是DOM编程艺术的一个移动元素的例子: 有两个问题: 1.var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"; 这句话里"moveElement('&quo

解决The type or namespace name \&amp;#39;XXXX\&amp;#39; does not exist in the namespace \&amp;#39;XXXXXXXXX\&amp;#39; 的错误

点击打开链接

Last_IO_Error: error connecting to master &amp;#39;tl@192.168.199.151:3306&amp;#39;

环境: centoos 6.5  主从 mysql 5.6.12 主: 192.168.199.11 从:192.168.199.12 主从切换 把 12 变为主,从为11  结果报错: Last_IO_Error: error connecting to master 'tl@192.168.199.151:3306' 11 从机上看到的: 刚配置的MySQL主从,在从机上看到 点击(此处)折叠或打开 mysql> SHOW slave STATUS \\G *****************

python列表中的字符串长成&amp;amp;#39;&amp;amp;quot;book&amp;amp;quot;&amp;amp;#39;。。。

问题描述 python列表中的字符串长成'"book"'... 列表是 a = ['"book"','"desk"','"pen"']的样子,怎样把每个元素外边的不必要的''除去呢?除了从新敲一遍,谢谢! 解决方案 strip或者字符串截取都可以哦 解决方案二: 直接用编辑器字符串替换掉 解决方案三: python_忽略大小写对字符串列表排序python列表 字符串 转换Python:字符串.列表和元组