【发布时间】:2018-12-15 13:42:33
【问题描述】:
我在两个物理服务器的两个实例中使用服务代理。使用此工具:
http://www.sqlservercentral.com/articles/Service+Broker/2797/
我为两台服务器设置了所有证书和所有其他选项。我正在使用此代码向目标机器发送消息:
Declare @ConversationHandle uniqueidentifier
Begin Transaction
Begin Dialog @ConversationHandle
From Service SenderService
To Service 'ReceiverService'
On Contract SampleContract
WITH Encryption=off;
SEND
ON CONVERSATION @ConversationHandle
Message Type SenderMessageType
('<test>test</test>')
Commit
但是当我检查目标队列时没有消息存在。所以我检查了发件人机器中的 sys.transmission_queue,我发现了这个:
所有消息都在这里。为什么?我怎样才能找到问题?
我检查了 sys.conversation_endpoints
6720A2A2-C8F6-E811-80E3-40A8F038BB1F 802A7832-100B-4093-BEF3-B91ACB98EA13 1 65536 6820A2A2-C8F6-E811-80E3-40A8F038BB1F 65536 2086-12-21 10:11:09.720 CO CONVERSING ReceiverService NULL 1 7 A3DAEFBC-2ADA-4C46-8F44-3FC9882BADD1 00000000-0000-0000-0000-000000000000 1900-01-01 00:00:00.000 1900-01-01 00:00:00.000 1 0x02388E050000 -1 0 0 0 -1 0 0 0 5
【问题讨论】:
-
看看有几件事。在 sys.transmission_queue 中,transmission_status 列是什么?如果那里什么都没有,我会考虑使用 SQL Server 附带的 ssbdiagnose 实用程序来查找配置错误。
-
@BenThul 如您所见,transmission_status 为空
-
我不能,因为我是在手机上剪的,而且图片很小。 ssb诊断它是!
-
@BenThul 我应该在 ssbdiagnose 中写什么? C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn>SSBDiagnose.exe -E -d "MYDB" FROM "senderservice" TO "ReceiverService" 发生内部异常:无法识别的命令行选项或参数 参数名称: -E
-
我的建议是将您的工作目录更改为该工具的位置并从那里运行它。