信息: 错误"-2147168246 (8004d00a)"无法调用对象的事务中登记

文章翻译 文章翻译
文章编号: 191168 - 查看本文应用于的产品
注意此错误消息可能会与错误编号相关联-2147168246 (8004d00a)。

重要提示本文包含有关编辑注册表的信息。在您编辑注册表之前,请确保您了解如何将其还原,如果出现问题。有关如何执行此操作的信息,请查看"正在还原Regedit.exe 中的"还原注册表项"帮助注册表"帮助主题Regedt32.exe 中的主题。
展开全部 | 关闭全部

本文内容

概要

什么"到登记调用对象上的失败消息交易记录"的含义是吗?

ODBC 驱动程序管理器会报告此错误时尝试打开事务 Microsoft 事务处理服务器组件数据库连接和驱动程序管理器无法登记数据库在当前事务中的连接。ODBC 驱动程序管理器登记通过调用 ODBC 驱动程序的当前交易记录中的数据库连接SQLSetConnectionAttr (SQL_ATTR_ENLIST_IN_DTC) 的过程。ODBC 驱动程序管理器将显示"失败登记"消息,如果对的调用SQLSetConnectionAttr 过程将失败。

有关其他信息,请单击下列文章编号,查看 Microsoft 知识库中相应的文章:
193893 Oracle 数据库中使用 Microsoft 事务服务器

更多信息

在使用 Microsoft SQL Server 时

如果发生此错误时您事务性 Microsoft交易记录服务器组件正在访问 Microsoft SQL Server 数据库中,请进行以下检查:
  1. 请确保 Microsoft 分布式事务Coordinator(MS DTC) 服务已启动。

    请确保 MS DTC在该系统上启动服务 Microsoft 事务服务器组件进行部署。如果您的 Microsoft 事务处理服务器应用程序访问 Microsoft SQL Server 数据库的远程系统上,请确保此外在该系统上启动 MS DTC 服务。这通常是原因"未能登记错误。

    执行以下步骤以检查 MS DTC 服务的状态:
    1. 在上 开始 菜单上,选择设置,然后单击控制面板。
    2. 选择服务图标。
    3. [服务] 列表中滚动,并确认将启动 MS DTC 服务的状态。如果 MS DTC 状态 (不是空白启动),您可以启动它 MSDTC 中选择,然后单击 开始.
  2. 请检查您的网络配置。

    当在一个系统访问事务的 Microsoft 事务处理服务器组件在另一个系统中,MS DTC 的 SQL Server 数据库传播 DTC 事务从第一个或主系统辅助系统。交易记录可以在主系统上的 DTC 进程才会发生传播与在辅助系统上 DTC 进程进行通信。DTC 进程建立远程过程调用 (RPC) 连接在两个方向,其中表示网络配置有问题或者系统可以防止 DTC成功地相互进行通信的过程。这将导致 ODBC 到返回"失败登记"的错误。

    往往是下面的 MS DTC 事件将记录在 Windows NT 应用程序事件日志中:
    主: 会话绑定失败。主超时等待绑定到第二。
    此错误表示 Microsoft 事务处理服务器上的 DTC无法绑定到 SQL Server 中上的 DTC,但 SQL Server 上的 DTC 的计算机不能执行反向绑定到 Microsoft 事务服务器计算机。

    如果您的网络配置不正确,每次尝试若要连接到远程 SQL Server 数据库结果中"未能登记"时出错。如果即使 Microsoft 以一致的方式得到"中登记失败"错误DTC 已启动两个系统上,失败的最可能的原因是网络配置错误。

    如果发生这种情况,请检查您的网络配置 (使用 Pingtest.bat,如下所示:
    1. 使用文本编辑器 (如记事本) 创建一个文件名为 Pingtest.bat。将下面的批处理文件命令复制到其中。
         echo off
         REM Usage pingtest OtherMachineName
         REM Must use a machine name and NOT an IP address
         ping -n 1 %computername%
         ping -n 1 %1
         ipconfig /all
         echo on
      该批处理文件使用 %计算机名 %要显示的本地 IP 地址。它然后将显示在命令中指定的远程计算机的 IP 地址当您运行该批处理文件的行。您必须在调用批处理文件时,指定的远程计算机,并不是其 IP 地址的名称。使用计算机名会强制 ping 来解决 MS 完全相同的计算机名称它将绑定到远程 MS DTC 的计算机时,就会执行 DTC。
    2. 在 Microsoft 交易记录服务器上运行 Pingtest.bat若要确定是否您可以通过名称来 ping 该 SQL Server 计算机的计算机。捕获从批处理文件中的文本输出。例如,如果 Microsoft在计算机 A 上运行事务处理服务器和 SQL Server 上运行计算机 B,使用下面的命令:
      Pingtest B > AResults.txt
    3. 在 SQL Server 的计算机上运行 Pingtest.bat确定是否您可以通过名称来 ping Microsoft 事务处理服务器计算机。捕获从批处理文件中的文本输出。例如,如果在计算机 A 上运行 Microsoft 事务处理服务器和 SQL Server 正在运行在计算机 B 上,请使用下面的命令:
      Pingtest A > BResults.txt
    4. 检查以确保这两个文本文件的内容在两台计算机可以成功地 ping 另一个。

      如果您使用主机或 TCP/IP 名称解析的 Lmhosts 文件非常检查这些文件小心,以确保它们包含有效的计算机名称到 IP 地址映射。若要执行此操作,请检查主机和 Lmhosts 文件中的在这两种 Microsoft 事务处理服务器上的 Winnt40\System32\Drivers\Etc 目录计算机和 SQL Server 的计算机。通常情况下,在一个系统上的文件将而在其他系统上的不正确,则是正确的。
  3. 要使用 TCP/IP,而不是命名 SQL Server 配置管道。

    如果您只会看到"登记失败"错误,然后,使用命名管道,而不是 TCP/IP 可能就是问题的原因。使用命名管道,可能会导致间歇性的"失败登记"的错误。
    Microsoft 强烈建议您配置 SQL Server 使用 TCP/IP而不是命名管道。使用命名管道可能会导致间歇性出现故障"为登记"的错误。
    1. 在上 开始 菜单上,选择程序,选择 Microsoft SQL Server 6.5,然后单击 SQL 客户端配置实用程序.
    2. 单击 网络库 选项卡。
    3. 在默认网络列表中,选择 TCP/IP套接字。
    4. 单击 完成.
  4. 检查事务超时。

    该组件事务可能会由于事务超时之前数据库已停止完成登记。您可以增加通过的事务超时值Microsoft 事务服务器资源管理器。使用以下步骤来提高超时值:

    1. 开始 Microsoft 事务服务器资源管理器和选择计算机。
    2. 用鼠标右键单击事务所在的计算机启动,并单击 属性.
    3. 单击 选项 选项卡上,指定一个较长的超时值。
    这是不大可能就是这个问题,除非您的交易记录需要一个很长的时间。但是,它可能有助于暂时增加若要排除此问题的潜在根源是超时值。

当使用 Oracle

如果发生此错误时您事务性 Microsoft交易记录服务器组件正在访问 Oracle 数据库,检查后面:
  1. 请确保已启动 MS DTC 服务。

    请确保该 Microsoft DTC 服务"启动",在该系统上您的 Microsoft 事务处理服务器组件进行部署。
    使用可以检查其状态的以下步骤:
    1. 在上 开始 菜单上,选择设置,然后单击控制面板。
    2. 选择服务图标。
    3. [服务] 列表中滚动,并确认将启动 MS DTC 服务的状态。如果 MS DTC 状态 (不是空白启动),您可以启动它 MSDTC 中选择,然后单击 开始.
  2. 在 Microsoft 上安装最新的 Oracle 客户端软件交易记录服务器计算机。

    请确保最新的 Oracle 7.3 或Oracle 8 客户端软件的修补程序版本包含的系统上安装Microsoft 事务处理服务器组件。请注意,通常要升级Oracle 软件的系统中包含的 Oracle 数据库,但会为失败在包含 Microsoft 的系统上将 Oracle 软件升级交易记录服务器组件。您必须在升级 Oracle 软件客户端系统。

    您可以获取最新的 Oracle 修补程序 Windows NT从 Oracle FTP 站点。请转到:
    ftp://oracle-ftp.oracle.com 然后选择"服务器"、"西南部 wgt 科技"、"服务器"和"windows Nt"
  3. 在您的 Oracle 数据库上安装最新版本的 Oracle 服务器软件服务器系统。

    如果 Microsoft 事务服务器应用程序访问 Oracle 数据库在 Windows NT 或 UNIX 系统上,请确保该系统上安装了最新的 Oracle 修补程序。

    您可以获得对于 Windows NT,从 Oracle FTP 站点的最新 Oracle 修补程序。请转到:
    ftp://oracle-ftp.oracle.com 然后选择"服务器"、"西南部 wgt 科技"、"服务器"和"windows Nt"
  4. 使用 Microsoft Oracle ODBC 驱动程序。

    进行某些 Microsoft 事务处理服务器正在使用 Microsoft Oracle ODBC驱动程序。没有其他 Oracle ODBC 驱动程序支持 Microsoft 事务服务器交易记录。

    您必须安装以下 Microsoft Oracle 之一如果您想要使用来自 Microsoft 事务处理服务器事务的 ODBC 驱动程序Intel x86 的平台。

    收起该表格展开该表格
    MS Oracle 的 ODBC 驱动程序版本编号发布交通工具
    2.0 更新2.73.7283.03MDAC 1.5b
    MDAC 1.5 c
    Windows NT 4.0 选项包
    2.0 更新2.73.7356ODBC 3.5 SDK
    2.52.573.2927Visual Studio 6.0
    SDK 2.0 的数据访问
    MDAC 2.0

    您必须安装 Microsoft Oracle ODBC 2.5 驱动程序版本 2.573.2927,如果您想要使用 Microsoft 事务服务器从 Alpha 的 Compaq 平台的交易记录。早期版本的 MicrosoftOracle 的 ODBC 驱动程序不支持 Alpha 的 Compaq 平台。

    您可以获取从 Microsoft Oracle ODBC 驱动程序 2.5:

    Microsoft 通用数据访问权限 (MDAC) Web 页 通过下面的"下载"链接。

    如果您想要访问 Oracle数据库,我们建议您使用 Microsoft Oracle ODBC 驱动程序 2.0 或更高版本即使您不需要使用事务支持的驱动程序。提供了此新的驱动程序更好的性能比它所取代的 Microsoft Oracle ODBC 1.0 驱动程序Oracle 1.0 驱动程序序列化的所有活动,在驱动程序级别 ;请求数该驱动程序通过单线程。Microsoft Oracle 2.0 和更高版本的驱动程序序列化在连接级别的所有活动。这允许不同要使用并行的数据库连接。
  5. 确保 Oracle XA 支持已启用。

    请检查以确保已启用了 Oracle XA 事务的支持。有关的详细信息信息,请参阅标题为"使 Oracle XA 事务部分支持"中的"使用 Oracle 数据库与 Microsoft 事务服务器"文档。

    1. 如果您正在使用 Oracle 7.3,请确保该 V$ XATRANS$存在。XA 库安装时,该视图应具有已创建。如果该视图不存在,您的 Oracle 系统管理员必须创建它的运行 Oracle 提供的脚本命名为"XAVIEW。SQL"。找不到此文件在 C:\ORANT\RDBMS73\ADMIN。作为 Oracle 用户必须执行此 SQL 脚本"SYS"。

      如果您使用的 Oracle8,应存在此视图。您应该不是需要创建它。
    2. 对于 Oracle 7.3 和 Oracle8,Oracle 系统管理员必须在向公众授予选择访问DBA_PENDING_TRANSACTIONS 查看。
      Grant Select on V$XATRANS$ to public.
    3. 在 Oracle 实例管理器中,单击 高级的模式 在上 视图 菜单上,在左窗格中选择"初始化参数"。在中右窗格中,选择"高级微调"并提高"distributed_transactions"参数,以允许更多并发 MTS 事务若要更新数据库的一次。
    有关详细信息,请参考您的 Oracle 服务器文档有关配置 Oracle XA 事务的支持信息。
  6. 请确保该配置 Oracle 和数字的字符正确。

    警告 注册表编辑器使用不当可导致严重的问题,可能会要求您重新安装操作系统。Microsoft 不能保证可以将导致不正确地使用注册表编辑器的问题解决了。使用注册表编辑器需要您自担风险。

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

    有的客户位于美国以外的系统可能需要配置 Oracle 数值字符支持。在 Windows NT 注册表中,找到下面的注册表密钥:
    HKEY_LOCAL_MACHINE\SOFTWARE\Oracle
    然后将添加此条目:
    "NLS_NUMERIC_CHARACTERS"=".,"
    请注意: 上面用引号括起来的字符串内的字符是一个句点和一个在这种顺序中的逗号。
  7. 确保 Oracle 会获配足够连接。

    如果您想要创建多个几十个连接到 Oracle 数据库,确保 Oracle 被配置为支持其他数据库连接。有关详细信息,请参阅部分的标题为"配置 Oracle 支持大连接数",在文档中"Microsoft 事务处理服务器与使用多个 Oracle 数据库"。
  8. 请确保您有一个连接到 Oracle 数据库如果您要使用 Oracle 的集成安全性。

    如果您使用 Oracle 集成MS DTC 安全性,请确认正在运行下一个登录 ID 和密码它有权连接到 Oracle 数据库。有关详细信息,请参阅在文档中的标题为"配置集成安全性"一节"Microsoft 事务处理服务器与使用多个 Oracle 数据库"。
  9. 运行 TestOracleXAConfig 程序。

    运行TestOracleXAConfig 程序,以确保您可以成功地连接到Oracle 数据库而无需使用 Microsoft 事务处理服务器。有关的详细信息信息,请参阅部分的标题为"测试安装和配置适用于 Oracle 的 MTS 支持的"中"使用与 Oracle 数据库Microsoft 事务服务器"文档。
  10. 运行该示例银行程序。

    运行该示例银行若要确保您可以成功地连接到 Oracle 数据库的程序从 Microsoft 事务服务器程序。有关详细信息,请参阅一节"验证的 Oracle 安装和配置使用""使用 Oracle 数据库与 Microsoft 文档中的示例银行应用程序交易记录服务器"。
  11. 启用 Oracle 跟踪。

    Oracle 是能够生成记录将 Oracle 之间发送的信息的跟踪文件客户端和服务器。这些跟踪文件可以是非常有用的诊断问题。您可以确保 Oracle 跟踪,如下所示:
    1. 确保安装在 MTS 系统 Mtxoci.dll版本 1998.08.762.0 或更高版本。与发布版本 1998.08.762.0NT4 Service Pack 4 版。这是 Mtxoci.dll 的第一个版本,使您可以启用 Oracle 跟踪并控制 Oracle 跟踪的位置文件。
    2. 使用资源管理器来查找并删除任何现有的 Oracle跟踪您的系统上的文件。这些文件具有以后缀结尾的名称"带.trc"。通过删除任何已过时的跟踪文件,您更加轻松地找到任何新创建的。
    3. 运行注册表编辑器创建以下注册表项:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Transaction Server\Local Computer\My Computer\OracleTraceFilePath
      为此密钥提供以下 REG_SZ 值:
      C:\OraTrace+DbgFl=7
      您可以选择一个不同的磁盘驱动器和目录跟踪如果所需的文件。
    4. 使用浏览器创建 Oracle 跟踪文件目录。在我们的示例中,将创建的目录上"C"的"OraTrace"驱动器。
    5. 停止正在访问 Oracle mts 管理包数据库。通过停止的包就能确保所有现有的 Oracle 数据库连接都将关闭,并且新 Oracle 数据库连接打开时接下来调用 MTS 组件。这些新打开的 Oracle 数据库连接已启用 Oracle 跟踪。
    6. 调用 Microsoft 事务处理服务器组件,正在打开的 Oracle 数据库。
    7. 检查新创建的 Oracle 跟踪文件。
  12. 启用 MTS/Oracle 错误跟踪

    MTS 能够捕获有关 Windows 中的 Oracle 错误的其他信息应用程序事件日志。您可以捕获此信息,请按如下所述:
    1. 运行注册表编辑器创建以下注册表项:
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping\MTx.Ini\TRACE
    2. 停止正在访问 Oracle mts 管理包数据库。通过停止包可以确保 Mtxoci.dll 的性能当它重新启动跟踪。
    3. 调用 Microsoft 事务处理服务器组件,正在打开的 Oracle 数据库。
    4. 使用 Windows 事件查看器来检查应用程序事件日志。查找 MTXOCI 所生成的事件。您可能会看到这样的事件)后面:
      字符串消息: sqlld2 调用失败,错误 0x849。
      错误值将显示在八进制。您可以使用计算器程序,可以将错误值转换为十进制数。在此示例中,"0x849"转化成了 Oracle 错误值 2121年。
  13. 检查事务超时。

    请考虑是否可能是 Microsoft 事务处理服务器组件的事务结束之前数据库已完成登记。如果这可能会发生的事务超时Oracle 数据库登记完成之前过期。

    您可以增加通过 Microsoft 事务的事务超时值服务器资源管理器。若要执行此操作,请使用下列步骤:

    1. 运行 Microsoft 事务服务器资源管理器,然后选择计算机。
    2. 用鼠标右键单击事务所在的计算机启动并选择快捷菜单上的属性。
    3. 选择 选项 选项卡上,指定一个较长的超时值。
    这是不大可能就是这个问题,除非您的交易记录最后一次为超过一分钟。但是,它可能会对暂时有所帮助增加超时值以消除此问题的潜在根源。

怎么办如果您仍遇到此错误

如果所述一切后仍遇到此错误在这里,应该该错误报告给 Microsoft 产品支持组织。请提供以下信息与您报告的问题。
  1. 描述问题。"失败登记"错误每次尝试使用 Microsoft 事务服务器事务发生或者是间歇性的失败吗?该故障是间歇性的如果频率执行该事件会发生吗?
  2. 描述您的应用程序和系统配置。
    1. 描述系统 Microsoft 事务服务器在安装了应用程序组件。如果您使用的 Oracle 数据库,提供 Oracle 客户端软件,Microsoft Oracle 的版本您使用的是 ODBC 驱动程序。
    2. 您正在使用 Microsoft SQL 数据库或 Oracle数据库出现问题?是 Microsoft 事务的同一台计算机上的数据库服务器应用程序组件,还是在单独的计算机上吗?如果您使用的Oracle 数据库,哪种类型的系统是安装在上的 Oracle 数据库和安装哪种版本的 Oracle 软件?
    3. 您是否正在使用何种网络传输: TCP/IP 中,名为管道、 IPX/SPX,等等?您是否正在使用什么名称服务: WINS,DNS 主机文件,等等?
  3. TestOracleXAConfig 程序可以运行吗?

    如果您要使用 Oracle 数据库,请试着运行 TestOracleXAConfig 程序。如果该程序无法正常工作,是与 Oracle 有问题。请报告问题Oracle 客户支持。
  4. 示例银行程序可以运行吗?

    请试着运行与 Microsoft SQL Server 示例银行程序。如果您正在使用 Oracle示例银行应用程序与 Oracle 不会运行数据库吗?如果不是,什么错误您遇到吗?
  5. Oracle 跟踪中报告错误文件?

    如果您使用的 Oracle 数据库,有哪些信息Oracle 跟踪文件中存在吗?要捕获此信息,请先找到和正在删除所有现有的 Oracle 跟踪文件系统上。这些文件的名称带.trc 扩展名结束。删除所有现有的跟踪文件后,请运行故障 Microsoft 事务服务器组件,并提供与 MicrosoftOracle 跟踪文件的内容。
  6. 在 Windows NT 事件报告哪些错误记录吗?

    检查 Windows NT 事件日志,并报告所有 DTC 事件,处或其附近出现故障时记录了。
  7. 您正在使用 Oracle 的集成安全性吗?

    报告无论您使用 Oracle 的集成安全性。
  8. 事务超时值是什么?

    请通知在 Microsoft 中配置何种事务超时值交易记录服务器。

参考

对于其他信息,请单击下面的文章编号,以查看在文章Microsoft 知识库文章:
193893 Oracle 数据库中使用 Microsoft 事务服务器

属性

文章编号: 191168 - 最后修改: 2013年6月28日 - 修订: 3.0
这篇文章中的信息适用于:
  • Microsoft Transaction Services 2.0
关键字:?
kbdatabase kberrmsg kbinfo kbmts kbmts100 kbmts200 kbmt KB191168 KbMtzh
机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 191168
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
不再更新的 KB 内容免责声明
本文介绍那些 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