Problem Connecting SQLServer2016x64 using LinkedServer to MySqlx32
I'm migrating a working system from Windows2003x32 with SQL2005x32 and MySqlx32 to Win2012R2x64 with SQL2016SP3x64 and MySqlx32
on the old system back I am still sucesfully using LinkedServer to read and write to MySql from SQL. With MySql ODBC 3.51 Dreiver.
On the new server I tryed a bunch of options all resulting in DSN architecture mismatch.
What I did:
I installed MySql-connector-odbc-3.51.30-win64 (later I tryed v5.1.13 and 5.3.14 both 32 and 64 versions)
Using odbcad32.exe from System32 and/or SysWOW64 (tryed both) I sucefully added under System DSN the datasource and tested Ok.
From SQLServerManager I tryed to add linked server using
EXEC master.dbo.sp_addlinkedserver #server='SVTPASS', #srvproduct='SVTPASS', #datasrc='SVTPASS',
#provider='MSDASQL',
#provstr='DRIVER={MySQL ODBC 3.51 Driver}; SERVER=LOCALHOST; Port=3333; USER=******; PASSWORD=********; OPTION=3; DATABASE=svt_fpc_auth'
later tryed using "DRIVER={MySQL ODBC 5.3 Driver}" and "DRIVER={MySQL ODBC 5.3 Unicode Driver}"
But the strange thing is that whatever I try, even writing nonsense at DRIVER={} the same architecture mismatch error I get.
When testing the connection of linked server I recieve the following error:
"[Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application"
where am I doing it wrong?
I know that I'm trying to acess a 32bit MySql from 64bit SQLServer but there should be a solution.
I read many forum posts about this issue and tryed a few options suggested here and there, but I'm confused and and I don/t even know now what combinations I tryed and what I didn't tryed yet.
Can someone help with at least telling what are the right weapons to use to fight this issue...
Thanks in andvance
I solved my own problem
I new that I had to create the DSN from 64 version of odbcad32 but
The problem was that I was trying to launch odbcad32.exe from SysWOW64 folder but it launched an created the DSN in 32 bit state. Only when I launched it from windows apps it worked and created the DSN in 64 bit.
thanks aniway
I don't know what to do with this thread/question in this case. please advise
Related
I know this question has been asked many times but my variation is slightly different and I'm pulling my hair out after spending several hours trying to get one line of code to work. I have a MySQL database and am trying to connect using ODBC. I'm on Windows 10 version 1909.
Line 13: OpenString ="DRIVER={MySQL ODBC 8.0 ANSI Driver};SERVER=localhost;DATABASE=collections;UID=edited_out;PWD=edited_out;"
Line 14: Conn = Server.Createobject("ADODB.Connection")
Line 15: Conn.open = OpenString
The code quoted works fine on my main PC with Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.8.4075.0 and DRIVER={MySQL ODBC 5.3 ANSI Driver}. On the test PC with an almost identical configuration, the exact same code with the exception of the driver name fails. (Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.8.4075.0 and DRIVER={MySQL ODBC 8.0 ANSI Driver} or, for that matter, DRIVER={MySQL ODBC 8.0 Unicode Driver} - both installed.) Please see the attached image for evidence. I get the well-known and depressing "Data source name not found and no default driver specified". Code snippet and drivers
I realise that this error is almost always due to getting the driver name wrong. However, I've checked and rechecked my syntax and the driver installation. I know there's nothing obviously wrong with my ODBC installation since I installed LibreOffice purely for testing and was able to connect to the same database via ODBC within seconds on the same PC using the same driver shown here. Is there something different or particularly troublesome about the ODBC version 8.0 drivers? Do I need to try to downgrade this one to 5.3?
Thanks for any help.
FIX: Disable 32 bit applications for your site if working with 64 bit!
(Answering my own question in the hope that it helps somebody.) I figured it out. The connection string was a red herring. Further detective work led me to a post that advised checking application pools in IIS. The advice was to enable 32 bit applications under Advanced Settings for your site if you have any 32 bit applications, which is fairly obvious.
However, my application is 64 bit and I noticed that this option was DISABLED on my working PC. Disabling it on the other PC restored the connection: evidently Windows was defaulting to a nonexistent 32 bit driver and showing an ambiguous error message when this failed. Software writers seem to dig a lot of these holes for users to fall into...
I am trying to make a link between MySQL and MSSQL databases using ODBC Drivers. The reason is that our website is built using PHP and MySQL and we need to manage the database from SQL Server Manag. Studio.
I have already linked MySQL to MS ACCESS, so MySQL ODBC drivers are fully working.
When I try to link them from MICROSOFT SQL SERVER MANAGEMENT STUDIO > SERVER OBJECTS > LINKED SERVERS > NEW LINKED SERVER...
With this configuration:
I get this error:
I have tried with all these versions of MySQL OBDC Drivers:
ODBC 5.3 Unicode (32-bit) - This one is the one working with MS ACCESS
ODBC 5.3 ANSI (32-bit)
ODBC 5.3 Unicode (64-bit)
ODBC 5.3 ANSI (64-bit)
ODBC 8.0 Unicode (64-bit)
ODBC 8.0 ANSI (64-bit)
For the NEW LINKED SERVER:
I have tried writing this in "Provider string":
Driver={MySQL ODBC 5.3 ANSI Driver};
DATABASE=myDB;OPTION=134217728;PWD=myPASS;UID=myUSER;SERVER=mySERVER
ODBC:DSN=KARALIGROUP32::Table=myTABLE
I have also tried writing myTABLE in "Catalog".
For the Security tab, I have tried all four options given. (In the last option, I typed the login for MySQL DB and also for SQL Server)
For the Server Options tab, I have tried given RPC and RPC out (both in TRUE or both in FALSE)
I also have to mention that the database SQL Server is not my own one, so I don't have full credentials. This is my user's permissions from SECURITY > LOGINS.
My conclusion: I think it is about MS SQL SERVER MANAGEMENT STUDIO configuration or my permissions as the user.
Thanks for your help!
Update:
I have followed the advise given by TallTed, it didn't work as yet.
In the Security and Server Options tabs, I have left them as shown in the previous screenshots.
I have also tried all the ODBC connections shown in the screenshot.
Any other ideas? Thanks for your help!
First off -- the error you've shown has nothing to do with your SQL Server user permissions.
Next -- it's important to remember that Microsoft SQL Server isn't really an ODBC client application. It is an OLE DB and an ADO.NET client application.
Also note -- 64-bit SQL Server requires a 64-bit ODBC driver; 32-bit SQL Server requires a 32-bit ODBC driver. There are some extra gotchas with 64-bit SQL Server, as described in this article on my employer's site.
If your data is strictly 8-bit "narrow" codepages, then you do not need a Unicode driver, and will probably find it easier to work with the ANSI driver. That said, given that you have ODBC 5.3 Unicode (32-bit) working with Access, I would think you'll have success using that or ODBC 5.3 Unicode (64-bit) with SQL Server.
Now -- a possible step toward success.
In your first screenshot, Product Name must be MSDASQL. You will need no Provider String, because this string comes from your ODBC DSN.
I solved it!
I was using a client computer. I installed the driver in the server and then followed this post: https://www.mssqltips.com/sqlservertip/4570/access-mysql-data-from-sql-server-via-a-linked-server/
Thanks and I hope it would help someone!
I am trying to connect to MySQL from my local machine located on a server using VBA. Initially I was receiving the below error.
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified.
After some research, I figured out that the MySQL ODBC driver should be installed first. I installed the driver from the below location.
http://dev.mysql.com/downloads/connector/odbc/
I have a 64 bit machine and so I installed the driver for 64 bit and tried to establish the connection. Even then I was receiving the same data source name not found error. However from the ODBC data source administrator, if I select System DSN, I am able to see MySQL driver installed and I am able to create a new data source for my database in the server.
However from VBA, if I call the data source I receive another error.
[Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application.
This is how I am calling the data source from my VBA.
Dim oConn As ADODB.Connection
Set oConn = New ADODB.Connection
oConn.Open "data_source_name"
Also,for the 64 bit ODBC connector I am able to see two drivers as below in my System DSN.
MySQL ODBC 5.2 ANSI Driver
MySQL ODBC 5.2 Unicode Driver
For both of the drivers, my connection is successful from the ODBC data administrator.
I tried to figure out a solution for the architecture mismatch problem and I read if I create the DSN by running the ODBC application from the below location on a 64 bit machine, it might work.
C:\Windows\System32\odbcad32
However for this scenario too, I received the same architecture mismatch error.
I even tried installing MySQL Connector/ODBC 5.2.5 32 bit in my machine. For this case, I am not able to see the driver listed in the system DSN.
Can someone help me figure out what am actually doing wrong?
I can select and loop thru results sets and do inserts. data verified in db. let me know if you need help
windows 7 Ultimate
version 6.1 (build 7601: service pack 1)
64 bit
************************************************************************
ODBC Data Source Administrator
run by command: %windir%\system32\odbcad32.exe
2 drivers:
MySQL ODBC 5.2 ANSI Driver , 5.02.05.00, Oracle, MYODBC5A.DLL, 4/4/2013
MySQL ODBC 5.2 Unicode Driver , 5.02.05.00, Oracle, MYODBC5W.DLL, 4/4/2013
************************************************************************
create System DSN, named hp
using Unicode Driver
dsn=hp
descr=hp
tcpip server=192.168.1.11
user=root
password=xxxxx
Database=test
************************************************************************
ODBC Data Source Admin tool
far right tab called About
Admin, Control Panel, Cursor Library, Driver Mgr, Localized R DLL, Unicode Cursor Lib all Version 6.1.7601-ish
************************************************************************
MSFT Office Professional Plus 2010
Version 14.0.6129.5000 (64 bit)
VBA 7.0
Tools Menu / References / References - VBAProject, scroll down, click on:
Microsoft ActiveX Data Objects 6.1 Library
References Location= c:\program files\common files\system\ado\msado15.dll
************************************************************************
code same, get into an excel Macro:
Sub Macro1()
'
' Macro1 Macro
'
Dim oConn As ADODB.Connection
Dim rsPass As ADODB.Recordset
Dim sql As String
Set oConn = New ADODB.Connection
oConn.Open "hp"
Set rsPass = New ADODB.Recordset
sql = "select * from charlie1"
rsPass.Open sql, oConn
rsPass.Close
sql = "insert into charlie1 (billybob,birthdate,funny_num) values (5,now(),383.111)"
rsPass.Open sql, oConn
End Sub
Run Task Manager and look for EXCEL.EXE - most likely it has *32 after it (the issue is you are running a 32-bit version of excel, attempting to use the 64-bit version of MySQL Connector/ODBC).
To resolve:
Be sure to remove any defined ODBC data sources (DSNs) before
uninstalling the 64-bit driver (unable to remove if the driver is
already uninstalled)
Uninstall 64-bit MySQL Connector/ODBC driver
Download and install 32-bit version of MySQL Connector/ODBC driver
To setup DSN, see this http://forums.mysql.com/read.php?37,357786,360776#msg-360776
Note: You may be able to have both the 64-bit and 32-bit drivers installed and therefore not require uninstall of the 64-bit version. I did not need both so I haven't tested whether it is possible to have both installed.
I was recently fighting with this problem myself.
Taking advice from iOSdedude, I followed the link you originally posted, downloaded the 32-bit driver, and my ODBC connection started working again.
I am running Windows 7 on and my OS shows 64-bit under My Computer --> Properties --> System Info, so I was surprised to see that the 64-bit driver didn't work.
Not a good explanation as to why this works, but it worked for me.
I have searched this for several days now (including trying the solution from one link from this site) and I still cannot get this to work...
Problem: I converted an old Visual Studio 2005 project to 2010 on a Windows 7, 64 bit box. Everything works fine, including my ODBC connection to an Oracle database...however, I cannot connect to a mySQL database like I could with VS 2005 on a WinXP 32 bit box.
What I've tried: Uninstalling the 64 bit ODBC driver for MySQL with a 32 bit driver. I added this to my System DSN and the test connection works fine (from odbcad32.exe). All other instances of this driver are removed from the User DSN from both odbcad32 and the 64 bit odbc client. I cannot continue my project without accessing this database. I have tried everything from every website thread, and I still cannot find a solution.
I get this error:
The thread '' (0x1648) has exited with code 0 (0x0).
A first chance exception of type 'System.Data.Odbc.OdbcException' occurred in System.Data.dll
An ODBC exception occurred: ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
A first chance exception of type 'System.NullReferenceException' occurred in App_Web_uoi23wal.dll
This is the connection string I am using:
mySqlConnectionString = "Driver={MySQL ODBC 5.1 Driver};Server=xx.xxx.xx.xx;Port=3306;Database=xxxx;User=xxxx;Password=xxxx;";
Can anyone please help me with this? I am at my wit's end! ;)
Thanks!
Couldn't find anyone else who has solved this, but I tried this and both worked for me. Original post is old but if anyone else reads this, possible solution for you.
"Driver={MySQL ODBC 5.2 ANSI Driver}; Server=localhost; Database=***; User=****; Password=****; Option=3;"
"Driver={MySQL ODBC 5.2 Unicode Driver}; Server=localhost; Database=***; User=****; Password=****; Option=3;"
Seems like you must actually specify the 'ANSI' or 'UNICODE' string instead of the 'w' or 'a' as has been suggested on other forums and threads. I presume its no coincidence that it is specified exactly like that in the ODBC Data Source Administrator menu (Control Panel -> System -> Administrative Tools -> Data Sources (ODBC) -> Drivers)
This worked for me on MySQL 5.1
Data Sources (ODBC):
- User DSN : delete the specified User DSN
- System DSN : create a new System DSN
Make sure you have only System DNS not both..
I am trying to port a large application from Windows XP to Windows 7. This application MUST work on both platforms side by side as I have 22 client machines and they are all currently Windows XP but will one by one over time be converted to Windows 7.
I have a MySql database that works fine in XP and has been for a few years. On my first Windows 7 machine, it fails when I run the line of code to open a connection to the db:
MyOdbcConnection.Open()
The error is "ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified".
To try to fix it, I downloaded the latest ODBC 5.2 drivers from MySql. I downloaded BOTH the 32bit and 64bit ones. I went into the ODBC Data Source Administrator for BOTH the 32bit and 64bit and added my datasource successfully for this db for a User DSN, System DSN, and File DSN. I can also successfully connect to the db from the MySql workbench.
This is my connection string. It's the same as the other working machine except that one is using the 5.1 driver.
Dim MySqlConString As String = "DRIVER={MySQL ODBC 5.2 Driver};" & _ "SERVER=myserver;" & _ "DATABASE=mydb;" & _ "UID=root;" & _ "PASSWORD=mypw;" & _ "OPTION=3" – Jason Shoulders 3 hours ago
Despite being able to add the data source and connect to the db via workbench, I continue to get an error when I run my exe. Any suggestions?
Apparently I needed to have:
DRIVER={MySQL ODBC 5.2w Driver}
Seems lame. I'm not sure where the "w" came from.
There is little point in adding a user, system and file DSN as your code is not using any of them. You are using what is usually referred to as a "DSN-less" connection. If you were using any of your created DSNs your connection string would be "DSN=my_created_dsn" or FILEDSN=path_to_file. As you are using "DRIVER={xxx}" all you are doing is telling the ODBC driver manager which driver to load and the other attributes in the connection string tell the driver what mysql db to connect to. The name you use for xxx needs to be exactly the name of the driver as shown in the odbc drivers tab. If you are going to continue connecting like this you can delete all your DSNs.
Your 32bit program will not find a 64bit odbc driver. Try setting up the 32bit driver with the following in a command window
%WINDIR%\syswow64\odbcad32.exe
I'm using Visual Fox Pro 9.0 under Windows XP Pro SP3 with 32 bit
I had the same problem but id did NOT work with:
Driver={MySQL ODBC 5.2a Driver} or with Driver={MySQL ODBC 5.2w Driver}
IT WORKED!!! with:
Driver={MySQL ODBC 5.2 ANSI Driver} or with Driver={MySQL ODBC 5.2 UNICODE Driver}
Try it.