SQL Server Service Broker无法发送消息,无法启动端点

时间:2016-08-04 07:58:44

标签: sql-server sockets windows-10 service-broker

我今天早上有一个完美工作的SQL Server Service Broker,直到我测试它是如何从崩溃中恢复的。

我通过网络在服务器之间的消息传递会话期间强制系统关闭发件人。我发送大约5mb大小的二进制消息。有自动程序可以发送,回复和接收消息并从两端结束对话,我的设置使用证书进行安全保护。

我现在无法从服务器端发送任何消息。

消息传递链的两端都有队列,似乎毒性消息处理不会导致此问题。发件人方接受新邮件但未发送邮件。

发件人方传输队列包含transmission_status

的邮件
  

由于以下错误,Service Broker端点无法侦听连接:' 10013(尝试以其访问权限禁止的方式访问套接字。)'。

运行ALTER ENDPOINT myendpoint STATE = STARTED会返回与上面相同的错误。

运行select * from sys.endpoints无论如何都会以state_desc = STARTED显示端点..

正在运行select state_desc from [sender_database].sys.conversation_endpoints会显示state_desc = CONVERSING所有结果。

正在运行SELECT COUNT(*) FROM dbo.sender_queue会返回0

我的端点正在使用的端口没有其他流量,至少不是netstat或TCPView工具可见的任何流量。端口具有允许来自防火墙的流量的规则,sqlagentsqlsrvr进程也有额外的规则可供使用。

在发件人方使用带ssbdiagnose -level info configuration from service...的ssbdiagnose工具会显示(非新)错误

  

服务sender_service的路由被归类为REMOTE。这将导致邮件被转​​发。

以及有关即使在消息传递工作时始终存在的证书的其他一些错误。带有RUNTIME标志的Ssbdiagnose根本没有显示任何内容。

来自目标方的Ssbdiagnose现在说在连接期间发生了异常。目标数据库还有一些回复消息卡在传输队列中,空transmission_status

修改:似乎有时目标端的状态会更改为错误10060 connection failed..

我还可以做些什么来诊断问题并修复它?

编辑:我尝试更改端点使用的端口,但会抛出相同的错误。

编辑:我可以互相ping服务器。目标端带有RUNTIME选项的Ssbdiagnose表示无法找到与我的发送方端点/数据库的路由地址对应的SQL Server连接。

1 个答案:

答案 0 :(得分:0)

  

由于以下错误,Service Broker端点无法侦听连接:'10013(An attempt was made to access a socket in a way forbidden by its access permissions.)'

WSAEACCESS(10013)是一个相当不寻常的套接字侦听错误。我以前从未见过它。快速搜索显示KB3039044错误10013(WSAEACCES)在Windows 中对排除端口的第二次绑定失败时返回这是Windows Server 2008R2,2012和2012R2中的已确认错误,当排除时一系列端口(netsh ... add excludedportrange ...)。所以我的第一个问题是,你是否在一个受影响的服务器操作系统上,你实际上是在使用网络端口排除范围吗?

我强烈建议您针对此问题打开Microsoft支持案例并跟进它们,确保网络人员参与其中(同样,WSAEACCESS是一种相当不寻常的症状)。这不是常见问题之一,很难通过论坛讨论进行诊断。