排查 SAP 适配器的安装问题

Microsoft BizTalk 适配器包的安装将复制计算机上的产品二进制文件,并为每个适配器注册绑定。 本部分讨论解决安装错误的故障排除方法。

安装操作的日志记录消息

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

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

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

安装程序无法注册适配器绑定或数据提供程序

问题

Microsoft BizTalk 适配器包安装向导无法为 mySAP Business Suite 注册适配器绑定或.NET Framework数据提供程序,但继续安装适配器。

原因

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

解决方法

应手动注册 SAP 适配器绑定或适用于 SAP 的数据提供程序。

注册适配器绑定或数据提供程序

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

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

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

  3. 注册 SAP 适配器绑定:

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

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

    3. 查找缺少的 SAP 适配器绑定。 在“bindingElementExtensions”节点下添加以下部分。

      对于 SAP 适配器,请添加:

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

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

      对于 SAP 适配器,请添加:

      <add name="sapBinding" type="Microsoft.Adapters.SAP.SAPAdapterBindingSection,Microsoft.Adapters.SAP, Version=<version>, Culture=neutral, PublicKeyToken=<public key>" />  
      

      注意

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

  4. 若要为 SAP 注册数据提供程序,请执行以下操作:

    1. 在“system.data”节点下搜索元素“DbProviderFactories”。

    2. 查找缺少的 SAP 数据提供程序。 在“DbProviderFactories”节点下添加以下部分。

      对于 SAP 数据提供程序,请添加:

      <add name="SAPClient Data Provider" invariant="Microsoft.Data.SAPClient" description=".NET Framework Data Provider for mySAP Business Suite" type="Microsoft.Data.SAPClient.SAPClientFactory,Microsoft.Data.SAPClient, Version=<version>, Culture=neutral, PublicKeyToken=<public key>" />  
      
  5. 保存并关闭 machine.config 文件。

确定公钥和版本

执行以下步骤来确定 SAP 适配器或适用于 SAP 的数据提供程序的公钥。

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

  2. 右键单击需要其公钥的 DLL,然后选择“ 属性”。 下表列出了 SAP 适配器的 DLL 和 SAP 数据提供程序的名称。

    适配器/数据提供程序 DLL 的名称
    SAP 适配器 Microsoft.Adapters.SAP
    用于 SAP 的数据提供程序 Microsoft.Data.SAPClient
  3. 在“ 常规 ”选项卡上,针对 “公钥令牌” 标签的值指定 DLL 的公钥。 同样, 针对版本 标签的值指定 DLL 的版本号。

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

未安装有效适配器错误

问题

在运行 64 位版本的 BizTalk 适配器包的 64 位计算机上,使用“添加适配器服务参考”Visual Studio 插件或使用适配器服务 BizTalk 项目外接程序会导致以下错误:

No valid adapters are installed on this machine  

原因

SAP 适配器是 WCF 自定义绑定,在 machine.config 文件中的 System.ServiceModel 下注册。 64 位平台有两个 machine.config 文件,一个由 32 位应用程序使用,另一个由 64 位应用程序使用。 因此,安装 64 位版本的 BizTalk 适配器包时,安装向导会在 64 位版本的 machine.config 文件中注册绑定。 但是,Visual Studio 作为 32 位进程运行,因此当你从 Visual Studio 启动“使用适配器服务加载项”时,插件会检查 32 位版本的 machine.config 文件中的绑定,但无法显示错误。

解决方法

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

    重要

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

  • 将 SAP 适配器的 32 位和 64 位版本的客户端 DLL ((如 librfc32u.dll) )添加到 PATH 变量。 必须将 32 位版本的 DLL 添加到 C:\Windows\SysWow64 文件夹。 必须将 64 位版本的 DLL 添加到 C:\Windows\System32 文件夹。

    重要

    如果适配器 (32 位或 64 位) 在具有 64 位操作系统的计算机上运行,并且使用适配器编写应用程序,则应将应用程序标记为与适配器相同的类型 (32 或 64 位) 。 此外,RFC SDK (32 位或 64 位) 的版本必须与适配器 (32 位或 64 位) 的版本相同。

    例如,如果 32 位适配器在具有 64 位操作系统的计算机上运行,则必须将适配器客户端应用程序标记为 32 位。

    有关 SAP 客户端 DLL 的详细信息,请参阅 安装适用于 SAP 的数据提供程序的自定义 RFC

配置 SAP 适配器端口时绑定错误无效

问题

尝试在 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 "sapBinding".  
Verify the binding extension is registered in machine.config."  

原因

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

解决方法

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

    重要

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

  • 将 SAP 适配器的 32 位和 64 位版本的客户端 DLL ((如 librfc32u.dll) )添加到 PATH 变量。 必须将 32 位版本的 DLL 添加到 C:\Windows\SysWow64 文件夹。 必须将 64 位版本的 DLL 添加到 C:\Windows\System32 文件夹。

    重要

    如果适配器 (32 位或 64 位) 在具有 64 位操作系统的计算机上运行,并且使用适配器编写应用程序,则应将应用程序标记为与适配器相同的类型 (32 或 64 位) 。 此外,RFC SDK (32 位或 64 位) 的版本必须与适配器 (32 位或 64 位) 的版本相同。

    例如,如果 32 位适配器在具有 64 位操作系统的计算机上运行,则必须将适配器客户端应用程序标记为 32 位。

    有关 SAP 客户端 DLL 的详细信息,请参阅 安装适用于 SAP 的数据提供程序的自定义 RFC

另请参阅

排查 SAP 适配器问题