SSIS:ODBC源的版本与此版本的数据流不兼容

时间:2016-12-23 13:56:58

标签: sql-server ssis odbc compatibility

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

程序包在本地运行正常,但每当我在服务器上运行它时,我都遇到了ODBC数据源的问题。服务器上的驱动程序与我工作站上的驱动程序完全相同。

要将软件包放入服务器,我已将dtsx文件导入存储软件包中的SSIS。我还尝试将项目部署到Integration Service Catalog,但是在这样做时我得到了与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时安装的它从未被卸载过。或者是其他东西?

6 个答案:

答案 0 :(得分:6)

我已通过将VS中的Integration Services项目的部署目标版本从SQL Server 2017更改为SQL Server 2016(目标SQL版本)来解决此问题。希望这可以帮助。旧问题,但是当我尝试解决问题时首先出现在Google中。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

这是我在SSIS中通常用于ODBC连接的方法 - 在32位和64位中创建连接。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

在我的情况下,我遇到此错误,因此我切换为使用32位版本。我的初始测试有效,然后我重新使用了一个正在使用的项目,即使我已将执行选项“使用32位运行时”标志切换了,我仍然再次遇到此错误。

最后,我的ODBC数据源出现了问题。我正在使用IBM Informix驱动程序,并且所选语言环境存在问题。我将其更改为使用服务器的特定本地,并测试了其连接。然后工作了,我的SSIS包在服务器上工作了。