消息队列不能在 IP 地址更改后到目标队列发送消息

文章翻译 文章翻译
文章编号: 833512 - 查看本文应用于的产品
重要本文包含有关如何修改注册表的信息。请确保您对其进行修改之前备份注册表。请确保您知道如何还原注册表发生问题。有关如何备份、 还原,以及修改注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756如何备份和还原在 Windows 注册表
展开全部 | 关闭全部

本文内容

症状

Microsoft 消息队列 (也称为 MSMQ) 无法成功地将消息发送到目标队列如果两个下列条件都为真:
  • 接收计算机的 IP 地址已更改。
  • 另一台计算机已假定了以前所拥有的接收方计算机的 IP 地址。

原因

出现此问题的原因是发件人不会重试名称解析。

解决方案

Microsoft Windows 2000

安全更新信息

若要解决此问题,应用以下 Microsoft 知识库文章中讨论了此安全更新:
892944更新-017: MSMQ 中的漏洞可能允许执行代码
注册表信息
在应用此安全更新后,您必须对注册表进行更改。有关详细的信息,请参阅""一节。

Windows XP

服务包信息

若要解决此问题,获得最新的 service pack,对于 Windows XP。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322389如何获取最新的 Windows XP 服务包
注册表信息
应用此服务包后,您必须对注册表进行更改。有关详细的信息,请参阅""一节。

修补程序信息

可以从 Microsoft 获得支持的修补程序。但是,此修补程序被用于解决本文所述的此问题。此修补程序仅应用于出现这一特定问题的系统。此修补程序可能会接受进一步的测试。因此,如果此问题没有对您造成严重的影响,我们建议您等待包含此修补程序的下一个软件更新。

是否可供下载此修补程序没有"提供修补程序下载"部分中,在这篇知识库文章的顶部。如果不会显示此部分,请联系 Microsoft 客户服务和支持以获取此修复程序。

注意如果出现其他问题,或者如果需要进行任何故障诊断,则您可能不得不创建单独的服务请求。将正常收取支持费用将应用于其他支持问题和不需要进行此特定的修补程序的问题。有关完整列表的 Microsoft 客户服务和支持的电话号码,或创建一个单独的服务请求,请访问下面的 Microsoft 网站:
http://support.microsoft.com/contactus/?ws=support
注意"提供修补程序下载"窗体所显示的此修复程序是可用的语言。如果您看不到您的语言,则是一个修复程序不能用于该语言。
系统必备组件
需要任何先决条件不。
重新启动要求
应用此修补程序后,您必须重新启动计算机。
注册表信息
应用此修补程序后,您必须对注册表进行更改。有关详细的信息,请参阅""一节。
文件信息
此修补程序的英文版具有的文件属性 (或更新的文件属性) 在下表中列出。日期和时间对这些文件列出在协调世界时 (UTC)。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的 日期和时间 项中的 时区 选项卡。
   Date         Time   Version     Size     File name
   -------------------------------------------------------------------------------
   15-Dec-2003  17:31  5.1.0.1041   67,456  Mqac.sys
   15-Dec-2003  20:37  5.1.0.1041  130,048  Mqad.dll
   15-Dec-2003  20:37  5.1.0.1041   14,848  Mqise.dll
   15-Dec-2003  20:37  5.1.0.1041  608,256  Mqqm.dll
   15-Dec-2003  20:37  5.1.0.1041  165,888  Mqrt.dll
   15-Dec-2003  20:37  5.1.0.1041   88,576  Mqsec.dll
   15-Dec-2003  17:31  5.1.0.1041   98,816  Mqtgsvc.exe
   15-Dec-2003  20:37  5.1.0.1041  467,456  Mqutil.dll
   15-Dec-2003  19:01  5.4.1.0     429,336  Windowsxp-kb833512-x86-enu-symbols.exe
   15-Dec-2003  19:01  5.4.1.0     799,000  Windowsxp-kb833512-x86-enu.exe

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

在 Windows XP Service Pack 2 中,此问题已得到纠正。

在 Windows Server 2003 Service Pack 1 中,此问题已得到纠正。

更多信息

在这种情况下,没有一个发件人和两个接收器 (接收器 A 和 B 接收器)。 接收方 A 使用虚拟专用网络 (VPN) 连接来连接到网络。 发件人已成功发送的消息。 接收方 A 与网络断开连接。 接收器 B 连接到网络和获取 IP 地址是以前使用的接收器 a。 接收器 A 也可能会重新连接并获取一个新的 IP 地址。发件人将继续发送接收器 A 到接收器 B.现在正在使用的 IP 地址的邮件 发件人不会不重试名称解析,因为上一个结果被缓存。 接收方 B 拒绝了的消息,但发件人继续将消息发送到接收器 b。 您必须重新启动消息队列服务以解决此问题的发件人的计算机上。

注册表更改

警告如果您修改注册表错误地使用注册表编辑器或使用另一种方法,则可能会出现严重问题。这些问题可能需要重新安装操作系统。Microsoft 不能保证可以解决这些问题。修改注册表的风险由您自己承担。

除了应用相应的更新,您必须在收件人和发件人设置的注册表参数。下面的注册表更改需要接收方一侧,以便接收方将释放会话,如果它收到一条消息,为非本地队列。这一更改意味着接收方将不会返回一个会话确认和发件人将关闭该会话很短的时间以后。 它是关闭会话,如果在指定的超时时间内未接收到的确认,将在发件人端的标准。然后,发件人将尝试重新建立会话。这些步骤,然后退出注册表编辑器:
  1. 单击 开始、 单击 运行,键入 regedit,然后单击 确定
  2. 找到并单击下面的项在注册表中:
    HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters
  3. 编辑 菜单上指向 新建,然后单击 $ REG_DWORD
  4. 键入 CloseSessionOnNonLocal,然后按 ENTER 键。
  5. 编辑 菜单上单击 修改
  6. 键入 1,然后单击 确定
您必须进行下面的注册表更改强制忽略其地址高速缓存和它建立一个会话前始终执行名称解析发件人。这些步骤,然后退出注册表编辑器:
  1. 单击 开始、 单击 运行,键入 regedit,然后单击 确定
  2. 找到并单击下面的项在注册表中:
    HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters
  3. 编辑 菜单上指向 新建,然后单击 $ REG_DWORD
  4. 键入 ForceNameResolutionDirect,然后按 ENTER 键。
  5. 编辑 菜单上单击 修改
  6. 键入 1,然后单击 确定
此修复程序也将添加名称解析代码日志的记录。通过添加以下注册表值来启用这一更改。这些步骤,然后退出注册表编辑器:
  1. 单击 开始、 单击 运行,键入 regedit,然后单击 确定
  2. 找到并单击下面的项在注册表中:
    HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\Parameters\Debug
  3. 编辑 菜单上指向 新建,然后单击 $ REG_DWORD
  4. 键入 QMLogging,然后按 ENTER 键。
  5. 编辑 菜单上单击 修改
  6. 键入 0x20,然后单击 确定
注意QMLogging 值是特定于 Windows 2000。CloseSessionOnNonLocal 和 ForceNameResolutionDirect 值均为 Windows 2000 和 Windows Server 2003。

下列注册表参数也都需要刷新 DNS 和 NetBIOS 名称解析高速缓存。否则,在缓存中的一个 IP 可能被归另一台计算机:
  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netbt\Parameters\CacheTimeout = (DWORD) 0
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\MaxCacheEntryTtlLimit = (DWORD) 1
注意MaxCacheEntryTtlLimit 注册表项是特定于 Windows 2000。在 Windows Server 2003,MaxCacheTtl 调用此注册表项。有关 MaxCacheTtl 注册表项的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
318803如何禁用在 Windows XP 和 Windows Server 2003 的客户端 DNS 缓存
有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明

属性

文章编号: 833512 - 最后修改: 2008年4月15日 - 修订: 10.1
这篇文章中的信息适用于:
  • Microsoft Message Queuing 3.0
  • Microsoft Message Queuing 2.0
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows XP Professional Edition
关键字:?
kbmt kbautohotfix kbhotfixserver kbtshoot kbwinxpsp2fix kbwin2000presp5fix kbbug kbfix kbwinxppresp2fix kbqfe KB833512 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 833512
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com