排查 SQl 适配器的安装问题

重要

SQL 适配器作为 BizTalk 适配器包的一部分以及单独的适配器提供。 如果要访问本主题以了解独立于 BizTalk 适配器包的 SQL 适配器的安装问题,则必须将所有对 BizTalk 适配器包安装程序的引用解释为 SQL 适配器安装程序。

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

安装操作的日志记录消息

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

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

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

已知问题

以下是安装 BizTalk 适配器包时可能遇到的最常见错误,以及其可能的原因和解决方法。

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

问题

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

原因

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

解决方法

应手动注册 SQL 适配器绑定。

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

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

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

  3. 注册 SQL 适配器绑定:

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

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

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

      对于 SQL 适配器,请添加:

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

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

      对于 SQL 适配器,请添加:

      <add name="sqlBinding" type="Microsoft.Adapters.Sql.SqlAdapterBindingCollectionElement,Microsoft.Adapters.Sql, Version=<version>, Culture=neutral, PublicKeyToken=<public key>" />  
      

    注意

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

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

确定公钥和版本

执行以下步骤来确定 SQL 适配器的公钥。

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

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

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

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

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

问题

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

No valid adapters are installed on this machine  

原因

SQL 适配器是 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。

在 64 位安装BizTalk Server管理控制台中配置 SQL 适配器端口时绑定错误无效

问题

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

原因

SQL 适配器是 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。

另请参阅

SQL 适配器疑难解答