MSDTC 失败进行相互身份验证时计算机不在同一个域中运行

针对 Windows Server 2003 的支持已于 2015 年 7 月 14 日终止。

Microsoft 已于 2015 年 7 月 14 日终止了对于 Windows Server 2003 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 827805
症状
当两台计算机运行不在同一个域中进行通信以及分布式事务,请使用 Microsoft 分布式事务协调器 (MSDTC) 时,相互身份验证可能会失败。

当您在运行 Microsoft Windows Server 2003 企业版的计算机上对 Microsoft SQL Server 2000 中的链接服务器运行分布式的事务时您可能会收到以下错误消息:
服务器: 消息 7391,级别 16,1,状态行 2
无法执行该操作,因为 OLE DB 提供程序 'SQLOLEDB 无法启动分布式的事务。OLE/DB 提供程序返回消息: 新的事务无法登记在指定的事务处理协调器。
原因
MSDTC 代理可能不正确 MSDTC 时验证通信的计算机不在同一个域中。
替代方法
重要此分区、 方法,或任务包含告诉您如何修改注册表的步骤。但是,如果注册表修改不当可能会出现严重问题。因此,请确保您仔细按照这些步骤。附加的保护注册表之前先备份您对其进行修改。然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756如何备份和还原在 Windows 注册表


有关如何编辑注册表的信息查看注册表编辑器 (Regedit.exe) 或 Regedt32.exe 中的在注册表中添加和删除信息"和编辑注册表数据帮助主题中的"更改项和值"帮助主题。Microsoft 建议您对其进行编辑之前备份注册表。

若要变通解决此问题,请关闭 RPC Windows Server 2003 计算机上的安全。RPC 安全机制是一个新的 DTC 在 Windows Server 2003 中的功能。当您禁用 DTC 上的 RPC 安全机制会返回 RPC 调用的身份验证的安全级别到 Microsoft Windows 2000 Server 中可用的级别。要这样做请按照以下步骤来设置为 1 的 DWORD 值为 TurnOffRpcSecurity 注册表值:
  1. 启动注册表编辑器 (Regedt32.exe)。
  2. 在注册表中找到以下项:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
  3. 编辑 菜单上单击 添加值,然后添加以下注册表值:
    值名称数据类型
    TurnOffRpcSecurityREG_DWORD1
  4. 退出注册表编辑器。
注意 在安装 Windows Server 2003 Service Pack 1 后,该注册表项 TurnOffRpcSecurity 设置为 0。您必须重新启动计算机之前,请使用注册表编辑器来恢复为 1 的值。
状态
此行为是设计使然。
更多信息

重现行为的步骤

  1. 请确保两台计算机都运行 Windows Server 2003。
  2. 这两台计算机上安装 Service Pack 3 (SP3) 与 SQL Server 2000。
  3. 请确保已在两台计算机上启动 MSDTC。
  4. 在第一台计算机上启动 SQL 查询分析器 (Isqlw.exe) 实用工具,然后连接到本地 SQL Server。
  5. 将第二台计算机添加为链接服务器。这样做在 SQL 查询分析器中运行下面的 TRANSACT-SQL 语句:
    EXEC sp_addlinkedserver  'remote_server',  N'SQL SERVER'GO
    注释 替换 remote_server,第二台计算机的名称。
  6. 在 SQL 查询分析器中运行下面的 TRANSACT-SQL 语句:
    SET xact_abort ON GOUSE  pubsGOBEGIN DISTRIBUTED TRANSACTIONSELECT  *  FROM remote_server.pubs.dbo.authorsCOMMIT TRANGO
    您可能会收到"症状"中提到的错误消息的这篇文章部分。
有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
329332您会收到错误 7391 时对链接服务器运行分布式的事务
有关 Microsoft COM + 1.5 的详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) 的网站:

警告:本文已自动翻译

属性

文章 ID:827805 - 上次审阅时间:12/05/2007 09:36:35 - 修订版本: 4.7

Microsoft Windows Server 2003 Enterprise Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft COM+ 1.5

  • kbmt kbinfo kbtshoot kbtransaction kbsecurity kbrpc kbauthentication kbdtc kbdomain KB827805 KbMtzh
反馈