【问题标题】:SSIS: version of ODBC source is not compatible with this version of the dataflowSSIS:ODBC 源版本与此版本的数据流不兼容
【发布时间】:2016-12-23 13:56:58
【问题描述】:

我正在使用 Visual Studio 2015 创建一个简单的 SSIS 包。数据源是一个 DB2 数据库,我在我的工作站上使用一个 ODBC 驱动程序来连接到 DB2。目标是 SQL Server 2014。

该程序包在本地运行良好,但每当我在服务器上运行它时,就会遇到 ODBC 数据源问题。服务器上的驱动程序与我工作站上的驱动程序完全相同,名称完全相同。

为了将包导入服务器,我已将 dtsx 文件导入到 SSIS 的存储包中。我也尝试将项目部署到集成服务目录,但这样做时遇到与 ODBC 源相关的这些故障之一 --

  • The version of ODBC File Source, clsid {xxx} is not compatible with this version of the Data Flow.
  • The component is missing, not registered, not upgradeable, or missing required interfaces. The contact information for this component is "ODBC Source;Connector for Open Database Connectivity (ODBC) by Attunity; Attunity Ltd.; All Rights Reserved; http://www.attunity.com

我还尝试使用基于文件的 ODBC 源而不是系统源,该文件位于服务器上的共享文件夹中。同样,它在 VS 中运行良好,但在服务器上却不行。

我查看了 dtsx 文件(基于 xml),我怀疑与 ODBC 驱动程序的 DTSID 存在冲突。我不确定它是如何工作的,但似乎该 ID 对于每台计算机都是唯一的,并且 SSIS 正在尝试在服务器上使用工作站的 DTSID。

我对 SSIS 和 Visual Studio 有点陌生,所以我希望我假设有一种简单的方法可以运行在服务器上的工作站上开发的包,而不会出现这些挂起。我只是在任何地方都找不到特定于这个问题的任何东西。

我们没有在服务器上安装 VS 或 SSDT。

编辑:我在上面的第二条错误消息中添加了第二句话。它指的是Attunity提供的一个连接器,这是我不明白的。系统上安装的 ODBC 驱动程序来自 Data Direct。错误消息中返回的 CLSID 还与服务器注册表中的 Attunity 连接器相关联。

在任何一个 ODBC 管理器中都没有显示 Attunity 的 ODBC 驱动程序,因此这些驱动程序可能是默认安装的一部分,或者是在我们的服务器过去直接安装 SSDT 和 VS 并且从未安装时安装的已卸载。或者是其他东西?

【问题讨论】:

  • 错误信息是什么?
  • @destination-data 有各种消息。 1) 'ODBC 文件源的版本,clsid {xxx} 与此版本的数据流不兼容。' 2) '组件丢失、未注册、不可升级或缺少必需的接口。'
  • @destination-data 我已经在服务器上测试了连接并且它可以工作,但不是我在工作站上创建的包。
  • 我赌的是 32 位与 64 位的问题,正如 in this article 所暗示的那样。
  • @TallTed 我得试一试,因为它是有意义的。

标签: sql-server ssis odbc compatibility


【解决方案1】:

我已通过将 VS 中集成服务项目的部署目标版本从 SQL Server 2017 更改为 SQL Server 2016(目标 SQL 版本)来解决此问题。希望这可以帮助。老问题,但当我试图解决我的问题时首先出现在谷歌中。

【讨论】:

  • 你是如何做出这个改变的?
  • 在 Visual Studio 菜单 Project-->Properties 中,或者在解决方案资源管理器中右键单击项目名称并选择 Properties。它应该是名为“TargetServerVersion”的常规属性类别中的第一个选项。
  • 这必须是公认的答案!一旦我这样做了,我还必须将 Run64BitRuntime 更新为 False 以使其正常工作。
【解决方案2】:

在我的情况下,这个问题是由于使用 SQL Mgmt Studio 2017 将 SSIS 项目部署到 2016 服务器引起的。使用 SSMS 2016 重新部署后,它解决了错误。

【讨论】:

    【解决方案3】:

    VS 或 SSDT 默认使用 32 位驱动程序,因此请在执行 32 位时检查是否有选项。或者同时安装 32 位和 64 位驱动程序并创建具有相同名称的 ODBC。

    这就是我通常在 SSIS 中为 ODBC 连接所做的——在 32 位和 64 位中创建连接。

    所以创建一个 C:\Windows\SysWOW64\odbcad32.exe(32 位) 和一个 C:\Windows\System32\odbcad32.exe(64 位)。

    【讨论】:

      【解决方案4】:

      在 SQL Server 代理中执行我的包时,我遇到了同样的问题。我通过在代理步骤中打开执行选项“使用 32 位运行时”标志来解决它。让我疯了几天,希望这会有所帮助。

      【讨论】:

        【解决方案5】:

        检查您的解决方案版本与您正在部署的 SQL 版本。我遇到了这个问题,匹配的版本解决了这个问题。我的解决方案是 2017,但 SQL 框是 2016。我不得不将解决方案更改为 2016。干杯!

        【讨论】:

          【解决方案6】:

          在我的情况下,我遇到了这个错误,我切换到使用 32 位版本。我的初始测试成功了,然后我使用我正在使用的项目重新部署,我再次收到此错误,即使我已切换执行选项“使用 32 位运行时”标志。

          结果是我的 ODBC 数据源出现问题。我使用的是 IBM Informix 驱动程序,但所选语言环境存在问题。我将其更改为使用服务器的特定本地并测试其连接。然后就可以了,我的 SSIS 包也可以在服务器上运行。

          在使用相同 Informix 驱动程序的另一种情况下,我的数据库名称稍有不正确,这给了我同样的错误。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-06-28
            • 2022-11-21
            • 1970-01-01
            • 1970-01-01
            • 2015-08-06
            • 1970-01-01
            相关资源
            最近更新 更多