I have a replication setup it was up and running yesterday, now I can't connect to the distributor and I don't know why.
我有一个复制设置,它已经启动并运行昨天,现在我无法连接到分销商,我不知道为什么。
- The publisher is on a Domain and talks to the subscriber (not on the domain) via VPN.
- I can ping the publisher from the subscriber and vice-versa.
- I can log in to MSSQL on the publisher from the subscriber.
- The publisher is in an error state because no activity is being logged from the subscriber.
- The subscriber can't connect to the distributor.
- Tracer tokens report a time for the distributor but only pending for the subscriber.
- Assuming db changes by a third person might be causing troubles, I deleted the subscription and the publication and recreated them.
- I can confirm that yesterday using the same tables/user accounts/servers etc the replication was working and replicating data.
发布者在域上并通过VPN与订户(而不是域)进行通信。
我可以从订阅者ping发布者,反之亦然。
我可以从订阅者登录发布者的MSSQL。
发布者处于错误状态,因为没有从订阅者记录任何活动。
订户无法连接到分发服务器。
跟踪器令牌报告分发者的时间,但仅针对订阅者。
假设第三人更改db可能会导致麻烦,我删除了订阅和发布并重新创建它们。
我可以确认昨天使用相同的表/用户帐户/服务器等复制正在工作并复制数据。
If you have any suggestions to try to narrow down where the problem is, they would be most appreciated.
如果您有任何建议尝试缩小问题的范围,他们将非常感激。
Answers to questions:
问题的答案:
- I am using one way transactional replication
- The distributor is on the same machine as the publisher.
- Both the publisher and the subscriber are 2003 SP2
我正在使用单向事务复制
分销商与出版商在同一台机器上。
发布者和订阅者都是2003 SP2
Seems to be working again
似乎再次工作
I still don't know why the original working setup stopped working. But when I re-subscribed I had the wrong credentials for one of the connections. By correcting that problem the replication is working once again.
我仍然不知道为什么原来的工作设置停止工作。但是当我重新订阅时,其中一个连接的凭据有错误。通过纠正该问题,复制再次起作用。
2 个解决方案
#1
Can you execute T-SQL both directions? You say that the subscriber can't connect to the distributer, but can the distributer see both? Is the distributer on your network or the remote network? I'm just wondering if things are batching up on the distributer, and the disconnect is between there and your subscriber, or if the disconnect is publisher -> distributer, especially if all three are on different servers.
你能同时执行T-SQL吗?您说订户无法连接到分销商,但分销商能看到两者吗?分销商是您的网络还是远程网络?我只是想知道是否有东西在分销商上进行批处理,并且断开连接在那里和你的用户之间,或者断开连接是发布者 - >分发者,特别是如果这三者都在不同的服务器上。
Just somewhere to start.
只是某个地方开始。
#2
I have never had to debug problems with the log-reader but often had to debug issues with the subscriber. What I would do is run the distribute agent (I remember it being called distrib.exe ... that is because I typed it in so often!) with a heck of a log of debugging flags set (I just looked up the docs on BOL and see an argument OutputVerboseLevel. I don't remember that argument name directly but it looks plausible).
我从来没有调试日志阅读器的问题,但经常不得不调试用户的问题。我要做的是运行分发代理(我记得它被称为distrib.exe ...这是因为我经常输入它!)带有一个调试标志集的日志(我只是查找了文档BOL并看到一个参数OutputVerboseLevel。我不记得那个参数名称直接但它看起来似乎合理)。
You can figure out what kind of arguments to provide to the agent by looking up the job definition that was set up by the replication wizard .. one of the steps should be a 'run an external command' and that will have a bunch of the argument names and values.
您可以通过查找由复制向导设置的作业定义来确定要向代理提供的参数类型。其中一个步骤应该是“运行外部命令”并且将包含一堆参数名称和值。
Once I had figured out the appropriate invocation, I saved it in a batch file and would then run it from the DOS prompt whenever there was a problem that was not debuggable from the GUI.
一旦我找到了适当的调用,我就把它保存在一个批处理文件中,然后每当出现一个无法从GUI调试的问题时就从DOS提示符运行它。
pjjH
#1
Can you execute T-SQL both directions? You say that the subscriber can't connect to the distributer, but can the distributer see both? Is the distributer on your network or the remote network? I'm just wondering if things are batching up on the distributer, and the disconnect is between there and your subscriber, or if the disconnect is publisher -> distributer, especially if all three are on different servers.
你能同时执行T-SQL吗?您说订户无法连接到分销商,但分销商能看到两者吗?分销商是您的网络还是远程网络?我只是想知道是否有东西在分销商上进行批处理,并且断开连接在那里和你的用户之间,或者断开连接是发布者 - >分发者,特别是如果这三者都在不同的服务器上。
Just somewhere to start.
只是某个地方开始。
#2
I have never had to debug problems with the log-reader but often had to debug issues with the subscriber. What I would do is run the distribute agent (I remember it being called distrib.exe ... that is because I typed it in so often!) with a heck of a log of debugging flags set (I just looked up the docs on BOL and see an argument OutputVerboseLevel. I don't remember that argument name directly but it looks plausible).
我从来没有调试日志阅读器的问题,但经常不得不调试用户的问题。我要做的是运行分发代理(我记得它被称为distrib.exe ...这是因为我经常输入它!)带有一个调试标志集的日志(我只是查找了文档BOL并看到一个参数OutputVerboseLevel。我不记得那个参数名称直接但它看起来似乎合理)。
You can figure out what kind of arguments to provide to the agent by looking up the job definition that was set up by the replication wizard .. one of the steps should be a 'run an external command' and that will have a bunch of the argument names and values.
您可以通过查找由复制向导设置的作业定义来确定要向代理提供的参数类型。其中一个步骤应该是“运行外部命令”并且将包含一堆参数名称和值。
Once I had figured out the appropriate invocation, I saved it in a batch file and would then run it from the DOS prompt whenever there was a problem that was not debuggable from the GUI.
一旦我找到了适当的调用,我就把它保存在一个批处理文件中,然后每当出现一个无法从GUI调试的问题时就从DOS提示符运行它。
pjjH