VIsio 2010 Can't 'see' File DSNs - sql-server-2008

I'm using Visio 2010 Pro to reverse engineer my database. For some reason the wizard can't see my file dsns (I create them using the wizard) but System DSNs work fine. I'd like to make my DSN files portable so they can be shared with my team.
I've tried running Visio as administrator and have created umpteen file DNSs without success. Is there something I'm missing?

I had the exact same issue and I believe the issue is related to running a 32-bit version of Visio on a 64-bit machine. In my case, I was running a 32-bit version of Visio on a Windows 7 box. I had to go into the 64 bit ODBC dialogue directly (located here: C:\Windows\SysWOW64\odbcad32.exe) and create my connection, and then was able to go back into Visio and successfully connect. I believe what happens otherwise is you default to the 32 bit ODBC dialogue when creating your DSN in Visio, which then fails to show up when you are attempting to select your DSN later in the wizard process. This post touches on some additional detail regarding the 32-bit vs 64-bit nuances: http://robertoschiabel.wordpress.com/2008/02/28/windows-x64-32bit-odbc-vs-64bit-odbc/

Related

ODBC Connector Bitness Issue (I think) on Windows Server 2012

I have a 32-bit application that uses a UDL file to connect to a mySQL database on a different host. This 32-bit EXE is running on a Windows Server 2012 R2 VM. There was a HDD failure and I'm reconfiguring the system to connect to the database, so I know this configuration should not be so troublesome.
A snapshot of what is true:
MySQL ODBC Connector (32-bit) 8.0.23 is installed.
I created the connection with a unique DSN in the 32-bit ODBC admin panel.
Testing the connection through the 32-bit admin panel works fine (I can see the schema, etc.).
Here's where things start getting fishy:
When I open the UDL file my application uses to start the connection, the 32-bit DSNs don't show up. If I type them in manually, I get the 'architecture mismatch' error that everyone seems to agree actually means 'bitness mismatch' (If I create a 64-bit DSN, they show up and ping the DB no problem.)
I found this trick to open the UDL file using the 32-bit ODBC driver:
OLEDB is very similar in that there is a 32 bit version and a 64 bit version of the providers. The easiest way to configure and OLEDB data source is to create an .UDL file on the operating system. By double clicking on the .UDL file you will see the OLEDB providers for the 64 bit side of the operating system presented in the Data Link Properties dialog. To get to the 32 bit version of the OLEDB providers you need to execute the following command line from a command shell.
C:\Windows\syswow64\rundll32.exe "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile C:\test.udl
...And that works! I can see the 32-bit named connections. The 'Test Connection' button produces happy output. But when I run my application, it does not connect using the DSN/credentials of the UDL file. It behaves like it is still trying to call the 64-bit version of the ODBC driver.
If my assumptions are correct, then how do I get my EXE to prioritize using the correct (x86) 32-bit oledb32.dll? Compatibility mode didn't fix my issue and I've run out of "clever" ideas to try.
Thanks in advance for any suggestions!

Users aren't able to run an Access 2007 app, after upgrading to Windows 10

We've got some MS Access 2007 apps here. I'm responsible for one. Normally, it never gives any problems. I haven't heard from the users of this app for over a year, until today. It was written years ago by someone (I don't know who) that is long gone, with little documentation. We're in the process of replacing all of our Windows 7 machines with Windows 10 machines. At first I thought that was the issue. However, one of my colleagues, who is responsible for a number of Access 2007 apps, said that his users are able to use their Access apps with no problem.
Looking back at the user's error, it says simply, "ODBC - call failed". No error number; just that. So, my next thought was maybe there was a missing DSN on the new Windows 10 machine. However, I asked the PC tech to check one of the working Windows 7 machines. He told me there were no DSN's in them. I'm not an Access developer, so I asked my colleague, who does do Access development, what he could discover. He found that the tables are all linked tables from a SQL Server database. Looking at what he was referring to (now that I know where to look) I saw what he meant. The connection to each of those tables uses trusted connections. They're all pointing to the correct SQL database server. That server is there. When I got into SSMS I could easily see data in the tables.
So, what could be causing that error to occur, especially since it doesn't look like it needs a DSN to make a connection to the SQL db?
I presume your Windows 10 is 64-bit.
And probably your Access is 32-bit.
Its important to know!
If my assumptions are correct, you need to use the 32-bit version of ODBC admin to setup the DSN.
The 32-bit version is 'C:\Windows\SysWOW64\odbc32.exe'
The 64-bit version is 'C:\Windows\System32\odbc32.exe'
32-bit Access will look for a DSN setup using the 32-bit version of ODBC admin, even on a 64-bit OS. If you setup the DSN with the 64-bit version of ODBC admin, then a 32-bit Access will not see it!
Go back on the Windows 7 PC, and check exactly how the DSN is setup.
Is it a System, User, or File DSN?
Which drivers are installed for SQL Server?
(There are various different ODBC clients available for SQL Server.)
Replicate this DSN configuration when you create the DSN on Windows 10.
It sounds like you using the 'SQL Server Native Client' on Windows 7,
so make sure to install that on Windows 10.
See: Installing SQL Server Native Client

ODBC driver is missing

I am using microsoft office 365 pro plus (2016)
I am trying to install Microsoft access driver *.accbd in ODBC data source administrtor.
I installed Micorsoft access database engine 2016 , After that i can see the driver .mdb but not the .accdb
I went to C:\windows\syswow64 and ran the odbcad32 as an administrtor but even though the .accdb is not listed.
What else i can do to make it work?
I have just found out that the .accdb drivers installed on system32 folder. So when i access the odbc data source manager from system32 folder then it works.
I still do not know how i can have them on SysWOW64 folder.
i'm not able to add comment to your answer, so i'll post it as an "answer".
There are two versions of odbc administrator on windows 7 and up, 32bit and 64bit,
you may need to make sure the right one is running, depends on your OS.
take a look here,
https://www.yellowfinbi.com/resources/forum/yfforum-how-do-i-setup-the-dsn-for-microsoft-access-odbc-driver-thread-103711

Microsoft.ACE.OLEDB.12.0 is not registered

I have a SQL Server job that runs monthly that runs in server. Job is using an SSIS package and is supposed to extract the data from database and and create an Excel sheet and copy the data into Excel 2003.
I actually got around 140,000 rows from the database due to truncation issue in Excel 2003 (Excel supports 64,000 rows). So I modified the config file to support 2007 Excel format.
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + #[User::FullPath] + ";Extended Properties=\"Excel 12.0;HDR=YES\"
But when I try to execute the job, it fails showing error message:
"The requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered"
Summarized: INSTALL 32 bit version of Microsoft Access Database Engine 2010 Redistributable. Uninstall 64 bit version if previously installed. http://www.microsoft.com/en-us/download/details.aspx?id=13255
The Excel connection manager is trying to use the ACE OLE DB provider in order to access the Excel file when the version is above 2007 (xlsx).
Although your box is 64-bit, you’re using SQL Server Data Tools, which is a 32-bit application. There is no 64-bit version for SSDT. When you design your package within SSDT, you’re using a 32-bit process, which can only use 32-bit providers. When you try to choose the table in the Excel file, the connection manager needs to access the 32-bit version of the ACE OLE DB provider, but this provider is not registered on your machine, only the 64-bit version is installed.
You should download the 32-bit version of the “Microsoft Access Database Engine 2010 Redistributable”. When you try to install it, you might get an error message.
You should first uninstall only the 64-bit version of the “Microsoft Access Database Engine 2010 Redistributable”, which you probably installed previously. The 64-bit version and the 32-bit version can’t live together on the same host, so you’ll have to uninstall (through “Program and Features”) and install the other one if you wish to switch between them.
Once you finish uninstalling the 64-bit version and installing the 32-bit version of the provider, the problem is solved, and you can finally choose the table within the Excel file. The Excel connection manager is now able to use the ACE OLE DB provider (32-bit version) in order to access the Excel file.
There is a alter way. Open the excel file in Microsoft office Excel, and save it as "Excel 97-2003 Workbook". Then, use the new saved excel file in your file connection.
Another option is to run the package in 32 bit mode. Click on the solution => properties =? Debugging => Set run in 64 bit to false.
I think you can get away by just installing the OLEDB Drivers -
http://www.microsoft.com/en-us/download/details.aspx?id=13255
I installed the "Microsoft Access Database Engine 2010 Redistributable" as mentioned above and got side-tracked troubleshooting bitness issues when it seemed to be a version issue.
Installing "2007 Office System Driver: Data Connectivity Components" sorted it for me.
https://www.microsoft.com/en-us/download/details.aspx?id=23734
The easiest fix for me was to change SQL Agent job to run in 32-bit runtime.
Go to SQL Job > right click properties > step > edit(step) > Execution option tab > Use 32 bit runtime
screenshot
You have probably installed the 32bit drivers will the job is running in 64bit. More info: http://microsoft-ssis.blogspot.com/2014/02/connecting-to-excel-xlsx-in-ssis.html
The easiest solution I found was to specify excel version 97-2003 on the connection manager setup.
I followed the instructions to use the /passive switch here, after downloading the 64 bit Access database engine. I'm running Office 32-bit, SSAS Tabular Model in SQL Server 2012. When I downloaded and ran the 64-bit Access database engine it came up with a message saying that I couldn't install this without first uninstalling Office 2010, but the /passive switch seems to have solved this (I can now import Excel workbooks and Access tables in a tabular model).
I was getting this same error after previously being able to complete similar operations. I didn't try downloading any of the mentioned packages since I didn't have them previously and things were working. IT at my job did a 'Repair' on Microsoft Office 2013 (Control Panel > Programs > Add/Remove - Select Change then Repair). Took a few minutes to complete but fixed everything.
Just install 32bit version of ADBE in passive mode:
run cmd in administrator mode and run this code:
AccessDatabaseEngine.exe /passive
http://www.microsoft.com/en-us/download/details.aspx?id=13255
I had this issue and it took me a lot of time to figure this out. #tara's answer helped me to solve this problem but I couldn't really find the setting to set run in 64 bit to false. So, here is the screenshot for where you can find the setting
If anyone is still struggling with this and have done all the above suggestions and Cry every time someone says install Database Access Engine. This is what sorted for it for me.
Install 32bit Database access engine as others have suggested.
Set to run in 32bit mode within Visual Studio
Set to run in 32bit mode on the Job Step within the job on SQL Server Agent. On the Step, General Advanced. Check 32-bit runtime.
I'd post some images but I don't have enough rep :(

How do I connect to MySQL using 32/64-bit ODBC drivers from within SSIS?

I have written an SSIS package and I'm having trouble with connecting to the MySQL server.
Ive tried both .NET connector and ODBC and I've hit issues with both.
The .NET connector has a known issue with dynamic queries and gives an error regarding not finding column P1 (which is a variable).
The recommended route to get past this is to use ODBC to connect. When i use the ODBC connector i get an error regarding memory issues with connecting to MySQL.
I have installed both 64 and 32 bit ODBC MySQL drivers and setup my ODBC connection, but it doesn't fix my issue.
I have tried just entering a connection string, but this leads me back to the memory error.
When reading some online guides it mentions two different Data Sources needing to be setup, one for 32-bit and one for 64 bit, but in Windows 7 I cannot see a 64 bit Data Sources program?
I have also found people mention using a specific mysql.data.dll file but i cannot find this file nor where to put it or reference it.
Read the below Microsoft KB to find the executables location to configure the 32-bit and 64-bit ODBC data sources. You need to configure the appropriate ODBC source so you can view it in BIDS or make the SSIS package run within an SQL Server Agent job.
Microsoft KB 942976
32-bit version of Odbcad32.exe file is in %systemdrive%\Windows\SysWoW64 folder.
64-bit version of Odbcad32.exe file is in %systemdrive%\Windows\System32 folder.
System drive would be the drive where you have installed the operating system.