排查 Oracle 数据库适配器的安装问题

安装 Microsoft BizTalk 适配器包会复制计算机上的产品二进制文件,并为每个适配器注册绑定。 本部分讨论如何使用故障排除技术解决安装错误,并列出了一些已知问题。

记录设置操作的消息

BizTalk 适配器包安装程序执行安装 BizTalk 适配器包的标准任务。 此外,安装程序还会执行某些自定义作,例如注册适配器绑定。 安装执行的标准操作和自定义操作的消息都可以记录。

  • BizTalk 适配器包安装程序使用 MSI 安装特定于适配器的文件。 因此,设置的日志记录是标准的 MSI 日志记录。

  • 安装程序所执行的自定义作的所有日志在 %TEMP%\adaptersetup.log 可用。 如果对日志文件的跟踪失败,则事件日志中也提供了跟踪。

安装程序无法注册适配器绑定

问题

Microsoft BizTalk 适配器包安装向导无法注册适配器绑定,但将继续安装适配器。

原因

这可能是由于 Windows Communication Foundation (WCF) 安装、Microsoft Windows Communication Foundation(WCF) 业务线 (LOB) 适配器 SDK 安装或 machine.config 文件损坏而导致的。 适配器绑定将写入 machine.config 文件。

解决方案

手动注册 Oracle 数据库适配器绑定:

  1. 导航到计算机上的 machine.config 文件。 例如,在 32 位平台上,machine.config 在系统驱动器>:\WINDOWS\Microsoft.NET\Framework\version>\<CONFIG 下<可用。

    在此路径中, <版本> 是 .NET Framework 的版本。

  2. 使用文本编辑器打开文件。

  3. 注册 Oracle 数据库适配器绑定:

    1. 搜索元素“system.serviceModel”,并在其下添加以下内容:

      <client>
        <endpoint binding="oracleDBBinding" contract="IMetadataExchange" name="oracleDb" />
      </client>
      
    2. 在 system.serviceModel\extensions 下搜索元素“bindingElementExtensions”。

    3. 请查找丢失的 Oracle 数据库适配器绑定。 在“bindingElementExtensions”节点下添加以下部分。

      请为 Oracle 数据库适配器添加:

      <add name="oracleDBAdapter" type="Microsoft.Adapters.OracleDB.OracleDBAdapterExtensionElement,Microsoft.Adapters.OracleDB, Version=<version>, Culture=neutral, PublicKeyToken=<public key>" />
      
    4. 在 system.serviceModel\extensions 下搜索元素“bindingExtensions”。

    5. 查找缺少的 Oracle 数据库适配器绑定。 在“bindingExtensions”节点下添加以下部分。

      对于 Oracle 数据库适配器,请添加:

      <add name="oracleDBBinding" type="Microsoft.Adapters.OracleDB.OracleDBAdapterBindingSection,Microsoft.Adapters.OracleDB, Version=<version>, Culture=neutral, PublicKeyToken=<public key>" />
      

    注释

    有关如何确定公钥和版本的信息,请参阅 “确定公钥和版本”。

  4. 保存并关闭 machine.config 文件。

确定公钥和版本

执行以下步骤来确定 Oracle 数据库适配器的公钥。

  1. 导航到 Windows 目录,通常为 C:\WINDOWS\assembly。

  2. 右键单击需要公钥和版本的 DLL,然后选择“ 属性”。 下表列出了 Oracle 数据库适配器的 DLL 的名称。

    适配器 DLL 的名称
    Oracle 数据库适配器 Microsoft.Adapters.OracleDB
  3. “常规 ”选项卡上,针对 公钥令牌 标签的值指定 DLL 的公钥。 同样,针对 版本 标签的值指定 DLL 的版本号。

  4. 复制公钥,然后单击“ 取消”。

在 64 位系统上使用适配器服务加载项或添加适配器服务引用插件时出错

问题

在运行 64 位版本 BizTalk 适配器包的 64 位计算机上使用 Visual Studio 中的“添加适配器服务引用”插件或“使用适配器服务”BizTalk 项目附加组件会导致以下错误:

No valid adapters are installed on this machine

原因

Oracle 数据库适配器是 WCF 自定义绑定,该绑定在 machine.config 文件中的 System.ServiceModel 下注册。 64 位平台有两个 machine.config 文件,一个由 32 位应用程序使用,另一个由 64 位应用程序使用。 因此,安装 BizTalk 适配器包的 64 位版本时,安装向导会在 machine.config 文件的 64 位版本中注册绑定。 但是,Visual Studio 作为 32 位进程运行,因此,从 Visual Studio 启动“使用适配器服务外接程序”时,插件会检查 machine.config 文件的 32 位版本中的绑定,并失败并出现错误。

解决方案

  • 在 64 位 WCF LOB 适配器 SDK 安装中同时安装 32 位和 64 位版本的 BizTalk 适配器包。

    重要

    只能有 64 位 WCF LOB 适配器 SDK 安装。 不支持在单台计算机上并行安装 32 位和 64 位 WCF LOB 适配器 SDK。

  • 安装带有修补集 11.1.0.7 的 Oracle 客户端 11.1.0.6 的 32 位和 64 位两个版本的 Oracle 数据访问组件。

    注释

    若要确保应用程序适用于最新版本的 ODP.NET,必须在计算机上安装“策略 DLL”并在 GAC 中注册。 有关详细信息,请参阅 Oracle 网站上的 用于 .NET 的 Oracle 数据提供程序

在 64 位安装上的 BizTalk Server 管理控制台中配置 Oracle 数据库适配器端口时,绑定错误无效

问题

尝试在 BizTalk Server 管理控制台中为适配器配置端口时,会收到以下错误:

"Unable to create binding configuration element for editing. Check the values of the BindingType and BindingConfiguration properties.
(Microsoft.Biztalk.Adapter.Wcf.Converters.CreateBindingException) Unable to get binding type for binding extension "oracleDBBinding".
Verify the binding extension is registered in machine.config."

原因

Oracle 数据库适配器是 WCF 自定义绑定,该绑定在 machine.config 文件中的 System.ServiceModel 下注册。 64 位平台有两个 machine.config 文件,一个由 32 位应用程序使用,另一个由 64 位应用程序使用。 因此,安装 BizTalk 适配器包的 64 位版本时,安装向导会在 machine.config 文件的 64 位版本中注册绑定。 但是,BizTalk Server 管理控制台作为 32 位进程运行,因此在为适配器配置端口时,它会检查 machine.config 文件的 32 位版本中的绑定,并失败并出现错误。

解决方案

  • 在 64 位 WCF LOB 适配器 SDK 安装中同时安装 32 位和 64 位版本的 BizTalk 适配器包。

    重要

    只能安装 64 位 WCF LOB 适配器 SDK。 不支持在单台计算机上并行安装 32 位和 64 位 WCF LOB 适配器 SDK。

  • 使用修补程序集 11.1.0.7 安装 Oracle 客户端 11.1.0.6 的 32 位和 64 位版本的 Oracle 数据访问组件。

    注释

    若要确保应用程序适用于最新版本的 ODP.NET,必须在计算机上安装“策略 DLL”并在 GAC 中注册。 有关详细信息,请参阅 Oracle 网站上的 用于 .NET 的 Oracle 数据提供程序

另请参阅

Oracle 数据库适配器疑难解答