Sql server MSMQ远程接收错误“;指定的格式名称不支持请求的操作";
所以遇到了这个奇怪的问题。我正在尝试从未经身份验证的事务性msmq接收消息。我的环境是:Sql server MSMQ远程接收错误“;指定的格式名称不支持请求的操作";,sql-server,msmq,windows-server-2012-r2,transactional-queue,Sql Server,Msmq,Windows Server 2012 R2,Transactional Queue,所以遇到了这个奇怪的问题。我正在尝试从未经身份验证的事务性msmq接收消息。我的环境是: 队列为Windows Server 2012 R2的服务器。这也是数据库服务器(SQL server) 安装客户端应用程序的服务器也是Windows Server 2012 R2 我正在尝试将消息从SQL Server发送到MSMQ(工作正常)。但是当客户端应用程序尝试使用下面的代码接收消息时,它抛出了我在标题中提到的错误 private void OnPeekCompleted(object send
- 队列为Windows Server 2012 R2的服务器。这也是数据库服务器(SQL server)
- 安装客户端应用程序的服务器也是Windows Server 2012 R2
private void OnPeekCompleted(object sender, PeekCompletedEventArgs args)
{
MessageQueue mq = (MessageQueue)sender;
if (mq != null)
{
try
{
if (Log.IsInfoEnabled)
{
Log.InfoFormat("[{0}] Starting processing message queue {1}", _endpoint.RouteName, _queue.QueueName);
}
mq.EndPeek(args.AsyncResult);
MessageQueueTransaction transaction = new MessageQueueTransaction();
transaction.Begin();
Message message = mq.Receive(transaction);
... // omitted for simplicity
我无法从DB服务器访问客户机服务器,因此我需要将消息队列放在同一个DB服务器上,因为我正在从SQL向队列发送消息
我已检查了以下各项:
谢谢如果此功能以前工作过并已停止工作,则您的问题几乎肯定是由于发送方或接收方的DTC更改、防火墙更改或两者都更改所致 根据需要,您可能需要: …将队列计算机和客户端计算机配置为启用 网络故障诊断码访问 及 …配置Windows防火墙以将MS DTC添加到异常列表中
如果这从未奏效,那么这可能是其他几个问题之一,但如上所述,远程读取“不是最佳消息传递模型的一部分”,即MSMQ采用的最佳范例是发送远程、读取本地。考虑改变你的体系结构,不要使用远程读取。< /P>什么是队列地址?这项工作之前和停止工作吗?谢谢汤姆。我听到你关于远程阅读的说法,并理解它不是推荐的型号。我们试图通过创建一个SQL调度作业并让它执行一个向消息队列发送消息的SP来减轻应用程序的一些沉重负载。问题是应用服务器无法从DB服务器访问,因此队列必须驻留在DB服务器上,我希望可以从应用服务器进行远程读取。我将按照您的建议尝试检查DTC设置和防火墙设置。谢谢