SSIS在调试模式下找不到32位ODBC驱动程序

SSIS在调试模式下找不到32位ODBC驱动程序

问题描述:

我在64位Windows 2008服务器上。在SSIS中,我有一个连接到ODBC连接的ADO.NET数据流项。预览工作正常。当我在调试模式下执行下面的异常被抛出:SSIS在调试模式下找不到32位ODBC驱动程序

[ADO NET Source [53]] Error: System.Data.Odbc.OdbcException: ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 
    at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) 
    at System.Data.Odbc.OdbcConnectionHandle..ctor(OdbcConnection connection, OdbcConnectionString constr, OdbcEnvironmentHandle environmentHandle) 
    at System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions) 
    at System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) 
    at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) 
    at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) 
    at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) 
    at System.Data.Odbc.OdbcConnection.Open() 
    at Microsoft.SqlServer.Dts.Runtime.ManagedHelper.GetManagedConnection(String assemblyQualifiedName, String connStr, Object transaction) 
    at Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManager100.AcquireConnection(Object pTransaction) 
    at Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter.AcquireConnections(Object transaction) 
    at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostAcquireConnections(IDTSManagedComponentWrapper100 wrapper, Object transaction) 

我能找到的最好的是SSIS找不到数据源,因为它是看在64的位置,这是比32位不同一。有没有办法来覆盖这个默认指向它的32位ODBC?

该问题可以通过在Project Debugging Options中将Run64BitRuntime设置为false来解决。这会导致错误:

[ADO NET Source 1]错误:SSIS错误代码DTS_E_INDUCEDTRANSFORMFAILUREONERROR。由于错误代码0x80131937发生,“组件”ADO NET源“(1)”失败,并且“输出列”Z_ID“(38)”上的错误行配置指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,提供有关失败的更多信息。

这是第三方ODBC驱动程序和.NET之间的缺陷。这是按照这里的步骤解决: http://blogs.msdn.com/sqlblog/archive/2009/04/09/after-installation-of-net-framework-3-5-sp1-or-net-framework-2-0-sp2-ssis-packages-using-odbc-3rd-party-drivers-may-fail.aspx

安装64位版本的MySQL连接器-ODBC-5.1.6-winx64.msi 32位客户端(XP/Vista的32位)使用ODBC 3.51 64位(Vista 64位)使用ODBC 5.1

conn.ConnectionString = “DRIVER = {MySQL ODBC 5.1 Driver};” + “SERVER = nnn.nnn.nn.nnn;” + “DATABASE = my_sql_database;” + “UID = my_uid;” + “PASSWORD = my_pwd;”;

conn.ConnectionString =“DSN = my_odbc_dsn”;

尝试再次创建DNS连接。

转到C:\ Windows \ SysWOW64并查找odbcad32并配置连接。

然后

转到C:\ Windows \ System32下,并期待为odbcad32和重新配置连接如。

使用相同名称fot。