SSIS 包连接管理器无法识别我的 Teradata 驱动程序

SSIS Package Connection Manager does not recognize my Teradata drivers

我安装了 Visual Studio 2010、2012、2013。我还安装了 VS2015 SSDT 预览版。

我正在编辑一些以 Teradata 作为源的现有 SSIS 包。这些属性在连接管理器中设置。

我安装了以下 Teradata 驱动程序:

我无法升级我的驱动程序,因为这些是我们生产服务器上使用的驱动程序。

如果我在连接管理器中右键单击 Teradata cnn,我会在属性窗格中看到以下限定符:

 Teradata.Client.Provider.TdConnection, Teradata.Client.Provider, Version=14.11.0.2, Culture=neutral, PublicKeyToken=76b417ee2e04956c

当我通过连接管理器编辑器编辑 Teradata cnn 时,出现以下错误:

TITLE: Microsoft Visual Studio
------------------------------

Could not get provider invariant name from the connection type qualifier "Teradata.Client.Provider.TdConnection, Teradata.Client.Provider, Version=14.11.0.2, Culture=neutral, PublicKeyToken=76b417ee2e04956c". You may need to manually edit the 'Qualifier' property of the connection manager if the default one selected is different from what you want.

------------------------------
ADDITIONAL INFORMATION:

 Could not create a DbProviderFactory class for the provider invariant name 'IBM.Data.DB2'. Verify that this provider is installed correctly on this computer. (Microsoft.DataTransformationServices.Design)

 For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%C2%AE%20Visual%20Studio%C2%AE%202015&ProdVer=14.0.23107.0&EvtSrc=Microsoft.DataTransformationServices.Design.SR&EvtID=CouldNotGetFactory&LinkId=20476

------------------------------

Failed to find or load the registered .Net Framework Data Provider. (System.Data)

然后,当连接属性编辑器打开时,提供程序类型默认为“.Net Providers\SQLClient 数据提供程序”。

如果我将提供程序设置回“.NET Providers.NET Teradata 的数据提供程序”,然后重新输入 cnn 属性,我可以成功测试连接并执行包。但是当我在同一个会话中重新编辑那个 cnn 时,我得到了同样的错误,并且 cnn 属性默认回到 'SQL 服务器属性,就像以前一样。

我已经多次重新安装了驱动程序。我已经尝试了多个版本的 Visual Studio。我在网上找不到有关 Teradata 的此错误的任何信息。我需要做什么?

可能相关:

我确实有另一个名为 'IBM DB2 .NET Data Provider' 的提供程序可用,错误消息中似乎引用了它?但我不知道为什么我不会使用 .NET Teradata 驱动程序。

在验证容器和验证 ADO .NET 源代码之间,我最多需要 15 分钟才能打开一个包。我在打开包裹时经常遇到这个错误:

TITLE: Microsoft Visual Studio
------------------------------

 Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSObject100'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{232F2C80-3B6E-4380-8D51-1B358E7FEA43}' failed due to the following error: The application called an interface that was marshalled for a different thread. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD)).

我明白了。冲突并非来自 Teradata 驱动程序本身。发生冲突是因为我还安装了 Toad,它创建了许多其他 .NET 驱动程序,包括几个 IBM.Data.DB2 驱动程序。我不确定为什么,但那些驱动程序阻止了 Teradata 驱动程序。我使用 Toad 连接到 Teradata,所以我想有一些重叠。

卸载 Toad 后,我可以正常打开和编辑连接。