1
votes

I created new data source to access an informix database over an odbc data provider(informix 3.33; 32bit). Testing this connection succeeded so i created a new connection manager (new connection from data source) to use it for my ADO NET destination task. When i try to select a destination table it takes about 10 secounds of processing to get the following error:

===================================

Could not retrieve the table information for the connection manager 'Test'. Could not create a DbProviderFactory class for the provider invariant name 'Oracle.DataAccess.Client'. Verify that this provider is installed correctly on this computer. (Microsoft Visual Studio)

===================================

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

------------------------------ For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%u00ae+Visual+Studio%u00ae+2008&ProdVer=9.0.30729.1&EvtSrc=Microsoft.DataTransformationServices.Design.SR&EvtID=CouldNotGetFactory&LinkId=20476

------------------------------ Program Location:

at Microsoft.DataTransformationServices.Design.ConnectionManagerUtils.GetConnectionTypeFromInvariantName(String providerInvariantName) at Microsoft.DataTransformationServices.Design.ConnectionManagerUtils.GetInvariantNameFromConnectionType(String connectionType) at Microsoft.DataTransformationServices.Design.PipelineUtils.GetActiveConnection(ConnectionManager connectionManager, IServiceProvider serviceProvider) at Microsoft.DataTransformationServices.Design.ComboBoxWithTables.FillTableOrViewComboBox()

===================================

Exception has been thrown by the target of an invocation. (mscorlib)

------------------------------ Program Location:

at System.RuntimeFieldHandle.GetValue(Object instance, RuntimeTypeHandle fieldType, RuntimeTypeHandle declaringType, Boolean& domainInitialized) at System.Reflection.RtFieldInfo.InternalGetValue(Object obj, Boolean doVisibilityCheck, Boolean doCheckConsistency) at System.Reflection.RtFieldInfo.GetValue(Object obj) at System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow) at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) at Microsoft.DataTransformationServices.Design.ConnectionManagerUtils.GetConnectionTypeFromInvariantName(String providerInvariantName)

===================================

The type initializer for 'Oracle.DataAccess.Client.OracleClientFactory' threw an exception.

===================================

Der Provider ist mit der Version des Oracle-Clients nicht kompatibel (Oracle Data Provider for .NET)

------------------------------ Program Location:

at Oracle.DataAccess.Client.OracleInit.Initialize() at Oracle.DataAccess.Client.OracleClientFactory..cctor()

This is pretty strange, because the error output shows problems with Oracle Data Provider for .NET and i took an informix driver & my destination is an informix, too.

I am using Windows 7 64bit, Visual Studio 2008, Informix 7.31C4

For some reason the package uses the oracle driver.

Any suggestions?

-

I just updated the informix driver to version 3.5 and created new ODBC connections. Even after that the error stays the same. This is pretty weird.

1
Could you be using the wrong DSN? Perhaps you have a user DSN and a system DSN with the same name but different configurations?Pondlife
Are you using the correct bit version? As in 32 bit and 64 bit versions?rvphx
@Pondlife I can only find one DSN with this name. It is a system DSN displayed in C:\Windows\SysWOW64\odbcad32.exe. No 32bit user DSN and no 64bit user or system DSN with this name. I think the 32 bit driver should normally work for me doesnt it?stb

1 Answers

0
votes

Make sure you're using the proper bit-level driver. If the calling app is 64-bit, you will need to use a 64-bit driver, if it's 32-bit, you'll need to use the 32-bit driver. My suspicion is you have a 32-bit driver and a 64-bit app, hence why it cannot find the driver since they're not the same bit-level. Either install the 64-bit driver, or recompile the app as a 32-bit executable.