Salesforce

Architecture mismatch error occurs attempting to establish an ODBC connection via a SQL client

« Go Back

Information

 
TitleArchitecture mismatch error occurs attempting to establish an ODBC connection via a SQL client
URL Name000039949
Article Number000165855
EnvironmentProduct: OpenEdge
Version: All supported versions
OS: All supported platforms
Other: Progress OpenEdge ODBC driver
Question/Problem Description
Architecture mismatch error occurs attempting to establish an ODBC connection via a SQL client

Architecture mismatch error occurs when using a 64-bit ODBC driver with a 32-bit client.

Architecture mismatch error occurs when using a 32-bit ODBC driver with a 64-bit client.

Error relates to the ODBC DSN specified. 

Problem occurs when the application attempts to load the ODBC driver.
 
Steps to Reproduce
Clarifying Information
For example,
  • Attempting to connect from Microsoft Excel 2007 32-bit to an OpenEdge database via a 64-bit ODBC driver fails with the error.
  • Attempting to create a Linked Server in Microsoft SQL Server 20## 64-bit to an OpenEdge database via a 32-bit ODBC driver fails with the error.
  • Attempting to access an ASP.NET Web Application from 64-bit Internet Information Services (IIS) using a 32-bit ODBC driver fails with the error.
Error MessageERROR [IM014] [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and the Application
Defect Number
Enhancement Number
Cause
This is expected behaviour. The ODBC driver and the SQL client have different architectures, e.g. one is 32-bit and the other is 64-bit. A 32-bit SQL client cannot use a 64-bit ODBC driver and vice versa.
 
Resolution
Ensure that the architecture of the ODBC driver matches the architecture of the SQL client application.
Driver and client architectures should match, e.g. both are 32-bit or 64-bit, but not a mixture of the two.
Workaround
Notes
The rule only applies to the SQL client and ODBC driver; it does not apply for the ODBC driver and the OpenEdge database. From an OpenEdge database perspective, the architecture of the ODBC driver is irrelevant. A 64-bit ODBC driver can connect to a 32-bit OpenEdge database; a 32-bit ODBC driver can connect to a 64-bit OpenEdge database.


Stack from IIS generated when trying to access an ASP.NET Web Application from 64-bit Internet Information Services (IIS) using a 32-bit ODBC driver:

Stack Trace: 
[OdbcException (0x80131937): ERROR [IM014] [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application]
System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) +1358681
System.Data.Odbc.OdbcConnectionOpen..ctor(OdbcConnection outerConnection, OdbcConnectionString connectionOptions) +73
System.Data.Odbc.OdbcConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +78
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +57
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +1160
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +314
System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +26
System.Data.Odbc.OdbcConnection.Open() +52
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +173
System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) +453
System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) +141
djst1.FPSTableAdapters.FpwVSTHdr_ProgIdTableAdapter.GetData(String ProgId) +243
djst1.DataLayer.LoadTemplates(String TemplateName) +71
djst1.LogicLayer.InitalizePage() +70
djst1.CST.Page_Load(Object sender, EventArgs e) +469
System.Web.UI.Control.OnLoad(EventArgs e) +103
System.Web.UI.Control.LoadRecursive() +68
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3811

 
Keyword Phrase
Last Modified Date1/8/2020 8:10 AM

Powered by