Connect from Excel 2007 to Oracle via ODBC (Windows7 x64) - excel

I have a Windows 7 64 bit and Excel 2007 32 bit.
I need to connect with Oracle DB by ODBC.
How can i create the above connection?
I installed 32bit client:
instantclient-basic-nt-12.1.0.2.0 and
instantclient-odbc-nt-12.1.0.2.0,
I created necessary environment paths (PATH, ORACLE_HOME, TNS_ADMIN) and I add ORACLE_HOME to variable PATH in system path.
When I'm trying to create DSN in C:\Windows\SysWOW64\odbcad32.exe I'm getting an error nr 126: system can not find a file SQORAS32.dll in %ORACLE_HOME%...
Any ideas?

I created ODBC connection!
The problem with error nr 126 still appears when I'm trying to create connection using driver "Oracle in instalclient_12_1", but when I'm using driver "Microsoft ODBC for Oracle" it works ok.

Related

Excel Connect to Oracle 12c Using VBA

Trying connect to an Oracle Database 12c Enterprise Edition 64-bit with Excel VBA.
The client machine has the following 32-bit drivers installed:
Microsoft ODBC for Oracle
Oracle in OraClient11g_home1
Oracle in OraClient12Home1_32bit
And the following 64-bit drivers installed:
Oracle in OraClient11g_home1
Oracle in OraClient12Home1
The file has the following reference:
Microsoft ActiveX Data Objects 6.1 Library
I've tried multiple formats of the connection string but nothing works.
'This gave the error "[Oracle][ODBC][Ora]ORA-12560: TNS:protocol adapter error"
cs = "Driver={Oracle in OraClient12Home1}; UID=myuid; PWD=mypwd; SERVER=myhostname/myservicename;"
'This gave the error "[Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified"
cs = "Driver={Oracle in OraClient12Home1}; UID=myuid; PWD=mypwd; SERVER=myhostname; DBQ=myservicename;"
'This gave the error "[Oracle][ODBC][Ora]ORA-12560: TNS:protocol adapter error"
cs = "Driver={Oracle in OraClient12Home1}; CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhostname)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myservicename)));UID=myuid; PWD=mypwd;"
'This would crash Excel
cs = "Driver={Oracle in OraClient11g_home1}; CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhostname)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myservicename)));UID=myuid; PWD=mypwd;"
I've also tried variations using the following drivers in the connection string
Microsoft ODBC for Oracle
OraOLEDB.Oracle
Oracle in OraClient12Home1
Thanks for your help everyone and sorry for the delayed response (had multiple work related "fires" I was putting out).
Anyway... I found a solution that worked for me. I don't think the problem was having multiple drivers on the same machine because I'm now able to connect without changing anything except the connection string method I used.
While I'm still not sure why the "driver" method of my connection string didn't work, I was able to use a "provider" based connection string and that worked.
'Using OraOLEDB.Oracle.1.
cs = "Provider=OraOLEDB.Oracle.1;User ID=myuid;Password=mypwd;Data Source=myhostname/myservicename;"
'Using OraOLEDB.Oracle.
cs = "Provider=OraOLEDB.Oracle;User ID=myuid;Password=mypwd;Data Source=myhostname/myservicename;"
'Using OraOLEDB.Oracle as a TNS-less connection string.
cs = "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myhostname)(PORT=myport)))(CONNECT_DATA=(SERVICE_NAME=myservicename)(SERVER=DEDICATED)));User Id=myuid;Password=mypwd;"
'Using variation of the above with a port included.
cs = "Provider=OraOLEDB.Oracle.1;User ID=myuid;Password=mypwd;Data Source=myhostname:myport/myservicename;"
I think it is a bad idea to have more than one version of Oracle Client installed, i.e. one 32-bit and one 64-bit.
For OLE DB (i..e "OraOLEDB.Oracle") it is even not possible to have more than one version due to limitation of COM where it is based on (unless you would register the DLL every time before you run an application).
In general you can use either ODBC or OLE DB, both should work.
The most important point is: the architecture (i.e. 32-bit or 64-bit) of your Excel must be the same as the architecture of your Oracle driver! The architecture of your database does not matter.
ODBC and OLE DB drivers are provided by Microsoft ("Microsoft ODBC for Oracle" and "MSDAO") and by Oracle (e.g. "Oracle in OraClient12Home1" and "OraOLEDB.Oracle")
The Microsoft drivers are old and deprecated, you should prefer the drivers from Oracle. Microsoft drivers exist only for 32-bit, so if your Excel is 64-bit then you are even forced to use the Oracle drivers.
Another note, the version of Oracle drivers (ODBC and OLE DB) has to be the same as the version of your Oracle client, most likely you messed it up when you installed three different Oracle clients.
In case you need to install 32-bit and 64-bit client, follow this instruction: BadImageFormatException. This will occur when running in 64 bit mode with the 32 bit Oracle client components installed

With 64-bit office 2013, "Microsoft.ACE.OLEDB.12.0" cannot be loaded on 64-bit SQL server

I am using MS office 2013 64-bit (after uninstalling 32-bit office 2013) on a 64-bit computer (with windows 10), and SQL Server 2014 Express connected through IP address.
My goal is to let SQL Server read excel data, using "SELECT * FROM OPENROWSET()" statement.
My problems is: I installed "AccessDatabaseEngine_x64.exe", but when executing "openrowset()", SQL Server gives me error msg "The 32-bit OLE DB provider "Microsoft.ACE.OLEDB.12.0" cannot be loaded in-process on a 64-bit SQL Server." Please read the following so you'll know I did tons of research and trials.
The question is: should I use AccessDatabaseEngine or AccessDatabaseEngine_x64 in this case? And how?
Background - to make this question complicated:
When I had 32-bit office on my computer, and was using "import" function under "database" on SQL Server to import excel (.xlsx) data, SQL Server forced me to install AccessDatabaseEngine (the 32-bit). So I did. And the import became successful.
But I'd like to make SQL Server to read local excel files dynamically without importing, so I decided to set up excel as server using "New Linked Server" function in SQL Server, but failed. The error msg is basically "Cannot initialized the data source object of OLE DB Provider 'SQLNCLI11' for linked server "Mycomputer". Then I found "openrowset / opendatasource" statement, tried it on SQL Server, and got error msg: "The 32-bit OLE DB provider "Microsoft.ACE.OLEDB.12.0" cannot be loaded in-process on a 64-bit SQL Server." The solutions I tried were the following:
1) uninstalled AccessDatabaseEngine;
2) instialled AccessDatabaseEngine_x64 (checked registry key to make sure its registered);
3) ran configurations as per "https://blogs.msdn.microsoft.com/farukcelik/2010/06/04/accessing-excel-files-on-a-x64-machine/";
4) ran "openrowset / opendatasource" again but still got msg "Microsoft.ACE.OLEDB.12.0" cannot be loaded in-process on a 64-bit SQL Server." Only now, I couldn't import excel (.xlsx) into SQL Server any longer, I guess because AccessDatabaseEngine was uninstalled;
5) uninstalled 32-bit office;
6) installed 64-bit office;
7 ) ran "openrowset / opendatasource" again, still got msg "Microsoft.ACE.OLEDB.12.0" cannot be loaded in-process on a 64-bit SQL Server."
8) uninstalled AccessDatabaseEngine_x64;
9) installed AccessDatabaseEngine, ran "openrowset / opendatasource" again, still got msg "Microsoft.ACE.OLEDB.12.0" cannot be loaded in-process on a 64-bit SQL Server."
The "Openrowset" statement I tries was like:
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0 Xml;
Database=C:\documents\2016.xlsx',
[sheet1$]);
So it seems neither AccessDatabaseEngine nor AccessDatabaseEngine_x64 works for me for either 32-bit office or 64-bit office.
Did I miss something?
Thank you!

Unable to Create ORACLE-ODBC DSN on Window 7 64 bit using SysWow64/odbcad32.exe

I am trying to create a DSN but I can't do it. The processes I am applying these are as follows:
1. Oracle 12c (64bit) Installed in Remote PC
2. Using Oracle 12c Client on Windows 7 64 bit
3. Trying to Create DSN from Syswow64/odbcad32.exe becuase I want to use this DSN from my Excel 2013 VBA program and the office is 32 bit.
3. After pressing the Add button on the Microsoft ODBC Administrator from Syswow64/odbcad32.exe, I don't find the
Oracle In OracleClient12Home2 in the driver list.
Please suggest me what should I do in this regard.
I have solved this. Basically due to security reason, my registry was not configured properly at the time of installation. I have removed my previous installation and Set new ORACLE_HOME and run install As Run As Administrator. After that the problem is solved.

Connecting to 32 bit Oracle client with 64 bit Excel

I'm trying to connect my Excel to Oracle with this connection string in VBA:
dim cn As New ADODB.Connection
cn.Open "Provider=OraOLEDB.Oracle;Data Source=source;User Id=userid;Password=pwd;"
I'm getting this error:
Run-time error '3706':
Provider cannot be found. It may not be properly installed.
Relevant references:
Microsoft ActiveX Data Objects 6.1 Library
OraOLEDB 1.0 Type Library
Excel is MS Office Professional Plus 2010 64-bit
Windows is 7 Enterprise, service pack 1, 64 bit
Oracle client is 11.2.0 32 bit (I think)
Oracle server is Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
Now... I have scoured the net and cannot figure out what the issue is, but my best guess is there's some 32 bit vs 64 bit conflict with drivers I'm using. I'm trying to get a sense of what path I should be taking before I involve my company's IT department to try installing stuff for me. Does the Oracle client have to be 64 bit if MS Office is? Or do I just need the 64 bit Oracle Data Access Components? I've tried a bunch of different connection strings with no success, including using MSDAORA instead of OraOLEDB.Oracle...
Yes, when you use 64-bit Excel you must install also 64-bit Oracle Client and 64-bit OLE DB Provider.
OLE DB Provider from Microsoft (i.e. MSDAORA) does not exist for 64-bit. It exists only for 32-bit and has been deprecated for very long time already.
I don't know whether you need your 32-bit Oracle Client for something else, so maybe you cannot simply remove it from your PC. Here is an instruction how to install both 32-bit and 64-bit Oracle Client on one machine.
Install Oracle Client x86 and x64
I too had the same issue and the solution is to set the oracle drivers for the excel session to 32 Bit drivers and initiate the excel.
I use the following Bat file to open the excel and it connects to oracle without any issues:
#
Set Temp=C:\Temp
Set TMP=C:\Temp
Set Oracle_Home= #YourDriveLetterhere - >M:\ORA12C\product\12.1.0\client_1
Set Path=C:\Windows;C:\Windows\System32;M:\ORA12C\product\12.1.0\client_1\bin;M:\ORA12C\product\12.1.0\client_1\nls\mesg;M:\ORA12C\product\12.1.0\client_1\network\admin;
START "" "C:\MacroFileNameWhichConnectsToOracle.xlsm"
#
The oracle server matters not.
Try opening a dos window and type c:\ tnsping yourservername
look towards installation issues.

How to connect pervasive sql Database and Web Site using DSN

I am having an application that is running on IIS with Enabled 32 bit Application.
In a remote server(connection available in local machine),i have installed Pervasive SQL.
I have installed Pervasive SQL Driver in local machine and trying to connect the database "TestApplication" in Pervasive SQL.
For that I have created System DSN "DSNTEST", and tried with Windows Application.Its working fine.
But i couldnt connect to the database from Web Site.
An error occured "Error: ERROR [IM014] [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application".
Can anyone please help me to resolve this?
Thanks in advance.
It sounds like the ASP.NET application is trying to run as a 64 bit application. Because you're using PSQL v11, you can install the 64 bit ODBC driver which is part of the PSQL v11 64 bit client install (at http://www.pervasive.com/database/Home/Products/PSQLv11.aspx).
The other option is to make sure that the ASP.NET project is built with a target of x86 rather than x64 or AnyCPU.

Resources