I have "inherited" a computer that has multiple ODBC driver's installed on it. Before I go removing anything, how do I tell which driver SQL Server is actually using? Does it just use the most updated one?
I am running SQL Server 2014, version 12.0.5207.0 (64 bit). I am also using SQL Server Management Studio 2017, version 17.5.
Additional question - I am planning to update the ODBC driver to 13.1, would I install the 64 bit since the server is 64 bit? When I look at the ODBC data sources the drivers are installed in both the 32-bit and 64-bit dialogues, so I am a bit confused. Total noob question, I realize, but I am very new to this.
That's not an easy answer. Let's break it into parts.
What driver is being used? The one the application requests. A driver is used by a client application to connect to the server, and the client application is the one that has the final say. You can look at the ODBC data sources configured in the machine to see the driver, but an application might not use an ODBC data source and instead embed the driver name into the application or some configuration file.
How can you tell? One way is to uninstall a driver and see what breaks. Usually not a good plan. Maybe you can use Process Monitor and check if any process load the drivers, but not Always feasible. If in doubt, leave the drivers alone. They are usually small and don't tend to cause trouble on their own.
As for SQL Server database engine and SQL Server Management Studio (SSMS), they normally don't use ODBC drivers. SSMS uses a .NET provider to connect to SQL Server. SQL Server database engine can use an ODBC driver if you have a linked server to another server.
If this is a database server and not an application server, chances are most drivers are rarelly used. If this is an application server, I'd leave the drivers alone. If it's a workstation, probably leave them alone too.
As for the new driver version, you need the 64-bit package to install, and it will install both 32 and 64-bit drivers. The reason is a 32-bit need a 32-bit driver, and a 64-bit application need a 64-bit driver. It's not the server bitness that matter in this case.
Related
I'm trying to connect to an Oracle Database on our server from an Excel sheet, but am having trouble understanding why.
I currently have both 32-bit and 64-bit Oracle 12c installed in different ORACLE_HOMEs and have a 32-bit installation of Excel on my 64-bit computer.
I'm trying to connect to an Oracle Database in Excel using the New Query wizard.
When I click From Oracle Database I get the following error/message.
I can continue with my current provider, but when I actually try to connect to a database I get this:
What I don't understand is why I'm getting this error when I have both 32-bit and 64-bit versions of Oracle 12c installed on my computer. Both are included on my PATH variable (32-bit first), and I also included a specific ORACLE_HOME and TNS_ADMIN to point to my 32-bit installation since my excel is 32-bit.
I really want the ability to query from the database through Excel, but this problem is confusing me to death.
EDIT
I've also just added the ODBC Driver from my Oracle home's into the ODBC Data Source Administrator Tool.
It's currently able to connect from this tool.
But when I try to connect to going through the ODBC Connection wizard, I know get this:
Any Ideas?
How did you install 32bit and 64bit Oracle Client?
Please have a look at this instruction: BadImageFormatException. This will occur when running in 64 bit mode with the 32 bit Oracle client components installed
Short version:
Your excel is 32bit and you try to use the 32bit Oracle. I assume you launch the 64bit version of "ODBC Administrator" - there might be the mismatch. Or you have a problem in your PATH regarding %ORACLE_HOME% and/or %ORACLE_HOME%\bin folder
Long version:
Your Excel is 32bit, so in general you did the right approach by putting the 32bit Client into PATH and for ORACLE_HOME, you cannot mix 32bit and 64bit assemblies in one process. Btw, when you follow the instructions above your Windows will manage this automatically.
I assume you installed the Oracle Instant Client. The default Instant Client does not include neither any ODBC driver nor Oracle Data Provider (ODP.NET, Oracle.DataAccess.Client)
ODBC
You may have 2 ODBC drivers, one from Oracle typically called like Oracle in OraClient12_home1 and one from Microsoft called Microsoft ODBC for Oracle (which should be installed by default Windows installation, however it also requires an Oracle Client).
The ODBC driver from Oracle is available for 32bit and 64bit, the Microsoft driver exits only for 32bit. You have 2 ODBC Administrators, 32bit (run c:\Windows\SysWOW64\odbcad32.exe) and 64bit (run c:\Windows\System32\odbcad32.exe). There you should see installed drivers for 32 resp. 64bit.
Oracle Data Provider
For the Data Provider you have similar situation. You have one from Microsoft (Microsoft .NET Framework Data Provider for Oracle, System.Data.OracleClient) and from Oracle (Oracle Data Provider for .NET, Oracle.DataAccess.Client, several versions). Both are available for 32bit and 64bit.
In principle it does not matter which driver/provider you use to connect to Oracle - just the architecture (i.e. 32 vs. 64 bit) has to match. Each driver/provider requires according Oracle Client installation. All drivers/providers from Microsoft have been deprecated, you should prefer the Oracle ones (as stated in the warning message)
Others
Oracle provides also the ODP.NET, Managed Driver which does not require any further Oracle Client installation and runs on both, 32bit and 64bit. However, I don't know whether you can use this in Excel.
Last but not least, you also have OLE DB provider. Again one from Microsoft (Microsoft OLE DB Provider for Oracle) and one from Oracle (Oracle Provider for OLE DB). The Microsoft provider exist only for 32bit and has been deprecated.
I am using the 64-bit version of SQL Server 2016 Express, trying to connect to a 32-bit Pervasive SQL v10 database. I am setting up a Linked Server in SQL Server via ODBC connection, but I am receiving this error that has given me a lot of pain in the past:
The specified DSN contains an architecture mismatch between the Driver and Application
I had a similar issue not long ago trying to connect to a Microsoft Access database, but with help here I was able to obtain the 64-bit ODBC driver for Access. However, there does not seem to be one for Pervasive v10 at all, only for PSQL v11+, which does not help me in this case.
Previous question: SQL Server Linked Server to MS Access - DSN Architecture Mismatch Error
So if anyone has a suggestion for connecting to a 32-bit client from a 64-bit SQL Server installation, when there does not exist a 64-bit ODBC driver for this client, please let me know.
One of the suggested solutions was to use an OLEDB link instead (but no details provided on this, and I'm not sure how it would differ from the linked server I am already trying to create, which is already using OLEDB).
There was also mention somewhere of installing an entirely separate 32-bit SQL Express client, and chaining an additional ODBC link to point to the first one, but I would rather avoid all that overhead if possible, especially since this is a production server that is already running Sage 50 in addition to our own software and web services with SQL Server...
Other details: The client that is built on Pervasive SQL v10 that I am trying to connect to is Peachtree 2017 - Sage 50. This is all running on Windows Server 2012 R2 Standard.
More reading here:
https://support.na.sage.com/selfservice/viewdocument.do?noCount=true&externalId=12693&sliceId=1&cmd=displayKC&dialogID=50216&docType=kc&noCount=true&isLoadPublishedVer=&stateId=50217&docTypeID=DT_Article&ViewedDocsListHelper=com.kanisa.apps.common.BaseViewedDocsListHelperImpl
https://www.experts-exchange.com/questions/23995371/Installing-Pervasive-SQL-Client-on-Windows-2008-64bit-missing-ODBC-Driver.html
Edit:
Thanks for the comments! After further investigation... it looks like this IS actually PSQL v11, not v10. Now, I'm not sure why the 64-bit ODBC driver is not already installed... but I am looking into this now...
I am trying to copy data from Oracle to SQL Server 2012, and I get the following message when selecting Data Source as Microsoft OLE DB Provider for Oracle:
Test connection failed because of an error in initializing provider.
Oracle client and network components were not found. These components
are supplied by Oracle Corporation and are part of the Oracle Version
7.3.3 or later client software installation.
I tried using .NET Framework Data Provider for Oracle and I get:
Attempt to load Oracle client libraries threw BadImageFormatException.
This problem will occur when running in 64 bit mode with the 32 bit
Oracle client components installed (system.data.oracleclient).
In SQL Server 2000 (which I am trying to move to SQL Server 2012/2014), I have the option of selection Oracle in OraClienthome directly.
Some additional information that may help diagnose the problem:
Using Toad 64 bit, it points to the 64 bit Oracle download; however, I can not tell if it is using a 32 bit driver or 64 bit driver. I can also run queries, etc. without issue.
ODBC, I can see Oracle when making a 32 (I am guessing) bit ODBC connection named Oracle in OraClienthome, but not in SysWOW64 odbc connection.
I successfully established a linked server connection on a server running 64 Bit SQL Server 2012. OraOLEDB.oracle shows up under Server Objects Linked_Server Providers
While creating an SSIS package, I am unable to establish a connection to Oracle.
I can successfully run queries in MS Access and Excel.
(NEW) I can copy files using Import Export Data 64 bit, but not 32 Bit.
Any help would be greatly appreciated!
In many cases the 64 bit drivers are not compatible and you have to install the 32 bit drivers then be sure you are selecting to use the 32 bit drivers if you create a job to run the package which is in the command options as the last check box. I also use toad to pull data from oracle on my desktop and it works fine with the 64 bit driver but on our new server I had to install the 32 bit drivers even though I was able to create odbc connection with connection manager. Also had to reboot win server after instal before I could get it to take.
Try to install and use Oracle Client on the MS site, and transfer the data using SSIS.
I got same problems, but when i've used connection using oracle client (you will see it in connection selection options) all worked ok.
Good luck!
I am having difficulty getting an application that uses SQL native client to connect to my SQL Server, which up until this point functioned just fine. SQL Profiler on the source server indicates my troublesome application isn't even connecting to the server. I can't find anything in the applications logs or the Windows Event logs.
I would like to independently prove that the issue is not SQL configuration on the machine by using another application to connect. I have tried ODBC with the SQLNCLI Driver, and it works fine but I'm not sure if that is the same as code that directly uses SQLNCLI. The matter is even more confused by the fact there are 32 bit and 64 bit versions of the driver available on my server. Are there any stand alone or command line utilities that I can use to emulate an applications connection to SQL and analyse any debug messages I might get back.
I'm on a server 2008 x64 machine, connecting to the SQL Server 2008 x64 Mirror.
I'm setting up a replacement server. Mostly it runs Mathematica jobs. I set up the ODBC connections on the new box to be the same as on the old box, but when Mathematica tries to connect, using
testConn=OpenSQLConnection[JDBC["odbc","MyODBCName"]]
I get
JDBC::error: [Microsoft][ODBC Driver Manager] Invalid string or buffer length
Searching on this mostly finds other people with related problems. Some references to 32/64 bit Java issues. I have Java 1.6.0_24 (32 bit) on the new server, 1.6.0 on the old. And Wolfram has not responded yet. Some programs that don't use ODBC to connect work fine on the new box.
Software versions are Mathematica 7, MS SQLServer 2008 on both boxes, Windows Server 2008 on the new one and Server 2003 on the old one. I created ODBC connections using both the 32 and 64 bit versions of odbcad32.exe
What am I missing, what didn't I tell you and what do you suggest?
Thanks, **kent
Some people have had success by installing the Microsoft Access Database Engine 2010 Redistributable. Even though this update says "Access" in the title, it might be relevant to your problem because it also updates the ODBC framework itself.