SSIS access provider - ms-access

I'm building an SSIS package on Microsoft Visual Studio Ultimate 2012 Trial Version to import an access database, but I can't see the correct provider (Microsoft Office 12.0 Access Database Engine OLE DB Provider) from the drop down when creating the connection string. I downloaded the AccessDatabaseEngine_x64 since the installed MS Office is a 64bit, I still can't see this provider that I'm looking for. I'm building this SSIS package on a Windows Server 2012 64 bit machine.
I need to know what I should do to be able to see this provider.
Can somebody help.

OK. this is mostly assumption but holds true for database drivers. I will quickly be downvoted if this is incorrect.
I assume your version of Microsoft Visual Studio Ultimate 2012 is a 32 bit app, so you cannot see 64 bit drivers.
Regardless of what type of install of Office you have, it will create an output file, and that file does not have 'bitness' - i.e. the same file is produced regardless of whether your office app is 32 bit or 64 bit.
You just need to match your SSIS runtime with your driver. So if your SSIS package will be running in 64 bit, you need a 64 bit driver to access an Office file.
If it will be running in 32 bit you need a 32 bit driver.
Normally you just install both versions, develop in 32 bit and run in 64 or 32 bit.

Related

pyodbc and MS access - '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') [duplicate]

My Softwares:
Python 3.4 -64 bit
PyODBC 64 bit
MS office package Installed (32 bit)
Problem:
Now, I try to access MS Access 2010 installed in my computer using PYODBC. It does not work regardless of what I try. My error is always this:
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
I already looked at:
pyodbc and ms access 2010 connection error
Cannot connect to Access DB using pyodbc
It is suggested that it is 32-64 bit problem which I am sure it is. Is there some modification that can be done to make it work without installing 32 bit python and 32 bit pyodbc? I checked this website.Using ODBC (32-bit and 64-bit) on 64-bit Windows which explains about accessing the control panel to modify ODBC connnection and/or drivers. However, I don't know much about windows database connection internals to commence some changes.
Is there something that I can do to make it work?
Is there some modification that can be done to make it work without installing 32 bit python and 32 bit pyodbc?
Not really. If you have 32-bit Office installed then you have the 32-bit version of the Access Database Engine (a.k.a. "ACE"), and only 32-bit applications can use it.
The installer for the 64-bit version of the Access Database Engine will abort if it detects 32-bit Office components. There is a way to force the installer to continue, but that is not recommended because it can apparently break Office.
Bottom Line: The "bitness" of your application must match the "bitness" of the installed Access Database Engine. So, practically speaking, your options are
Use 32-bit Python and pyodbc, or
replace your 32-bit Office with the 64-bit version.

Front end (installed Access 365 32 bit with ODBC MySql BE) won't open for 64 bit users

My development computer has Installed 32-bit Access (Office 365). I now have users with 64-bit Access who cannot open the application. Is there any way to install 64-bit (either Runtime or full) for debugging purposes? So frustrating!
You have to convert your application to 64bit Access
This is done by obtaining a Ms Access 64bit (Office) ..opening your application on it and working out any bitness differences.. and of course providing the appropriate driver for MySQL : https://cdn.mysql.com//Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.14-winx64.msi

Trying to connect to an access with a UDL file

I'm trying to connect to an Access database via a UDL file. I'm wanting to generate a connection string so that I can connect to an access database via ADO.NET. It's been a few years since I've tried to do this.
I have Visual Studio 2015 Pro and Microsoft Access 2016 installed on my Windows 10 x64 pro machine. When I create a .udl file I have the following available options:
Microsoft OLE DB Provider for ODBC Drivers
Microsoft OLE DB Provider for Search
Microsoft OLE DB Provider for SQL Server
Microsoft OLE DB Simple Provider
MSDataShape
OLE DB Provider for Microsoft Directory Services
SQL Server Native Client 11.0
I think that in years past I would also see Microsoft Jet 4.0 OLE DB in this list. From the research I've done I think that Jet 4.0 is deprecated and that I should be using the Access Database Engine. I find the following versions that I think are that:
Microsoft Access Database Engine 2010 Redistributable
Microsoft Access 2013 Runtime
Microsoft Access 2016 Runtime
I downloaded the x64 version of Microsoft Access 2016 Runtime and when I try to install it I get the following error:
We can’t install the 64-bit version of Office because we found the following 32-bit programs on your PC:
Office 16 Click-to-Run Extensibility Component
Please uninstall all 32-bit Office programs, then retry installing 64-bit Office. If you want to install 32-bit Office instead, please run the 32-bit setup.
I've tried the 32-bit version of the Microsoft Access 2016 Runtime and I get the same message:
We can’t install the 32-bit version of Office because we found the following 64-bit programs on your PC:
Office 16 Click-to-Run Extensibility Component 64-bit Registration
Please uninstall all 64-bit Office programs, then retry installing 32-bit Office. If you want to install 64-bit Office instead, please run the 64-bit setup.
I've tried closing all open Microsoft Office and Visual Studio applications and I get the same error. Am I installing the right component? Any way to get it to install correctly?
You probably miss the ACE driver listed here - and only this, not the runtimes:
Microsoft Access Database Engine 2010 Redistributable

SSIS why all connection manager drivers pointing to 32 bit versions?

I was struggling for long time to export data to Excel while running my package in 64-bit mode. Currently I have set Runtime64bit to false to get job done but I really want to run in 64-bit mode for some strong reasons.
For that I have installed AccessDatabaseEngine_X64.exe (after uninstalling existing drivers). But I still get unable to acquire connection error. I have to run in 32 bit mode even after installing 64-bit driver. What is wrong?
What I have noticed is that when I creating a new Excel connection the connection manager dialog box is showing the drivers path pointing to 32 bit version. When I looked at other drivers, they are also pointing to 32-bit version. (see screenshot below). Is there anything to do with this?
My Environment:
- Windows Server 2012 Standard (64-bit)
- MSSS DT 2012
- MS Excel 2010 (64-bit)
- MicrosfotAccess Data Engine 2010 (64-bit)
My Excel file is saved in 97-2003 format (.xls)
Let me quote this FAQ - How to run SSIS Packages using 32-bit drivers on 64-bit machine
On 64 Operating System when you install Integration Services it will
install 32-Bit and 64-Bit version of DTExec commandline tool which is
used to execute SSIS packages.
DTExec 32-Bit can be found under : C:\Program Files (x86)\Microsoft
SQL Server\90\DTS\Binn
DTExec 64-Bit can be found under : C:\Program Files\Microsoft SQL
Server\90\DTS\Binn For more information click on the following URL
http://msdn.microsoft.com/en-us/library/ms162810.aspx
If your SSIS package is referencing any 32-Bit DLL or 32-Bit drivers
from your package then you must use 32-Bit version of DTExec to
execute SSIS package.
-- EDIT --
Extended explanation by example.
Imagine you create a new SSIS package. In it you connect to an Excel file. For this to work, you need to have MS Office, or the Microsoft Access 2016 Runtime
in the machine that is executing the package.
So, you are creating the package in VS in your desktop. You have Office 32 bit installed and it all works fine.
When you deploy to the serve, in this case a Windows 2012 (64 bit). You think that... STOP! The bit of the server does NOT matter. OK, but my SQL Server is 64 bit so... NO, it does not matter neither!
Once an SSIS package is published, look at the scheduled job properties. In there you can specify to run in 64 or 32 bit mode.
Depending on this you need to have the correct version of drivers installed!
Run the SSIS package on 64 bit; install 64 bit drivers!
Run it on 32 bit; then install the 32 bit drivers!
But I still get unable to acquire connection error. I have to run in 32 bit mode even after installing 64-bit driver. What is wrong?
When you execute your package and look at the Progress tab, you will no doubt be getting an error message similar to:
[Connection manager "Excel Connection Manager"] Error: The requested OLE DB provider Microsoft.Jet.OLEDB.4.0 is not registered. If the 64-bit driver is not installed, run the package in 32-bit mode. Error code: 0x00000000.
An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x80040154 Description: "Class not registered".
When you set up your Excel Connection Manager, choosing Excel 97-2003 file type will default to the Microsoft Jet OLEDB driver which is available as a 32-bit version only.
Assuming you have the 64-bit Microsoft Access Database Engine 2010 Redistributable still installed, what you need to do is click on the Excel Connection Manager you created in the Connection Managers tab. In the Properties pane, look for the ConnectionString property (under Misc if grouped by category).
You'll see the Provider is set as Provider=Microsoft.Jet.OLEDB.4.0, the 32-bit only driver. If you had chosen "Excel 2007" as the file type it would have used Microsoft.ACE.OLEDB.12.0 which is 32-bit or 64-bit depending on which Microsoft Access Database Engine Redistributable you installed.
Change the Provider to Microsoft.ACE.OLEDB.12.0 in the ConnectionString property. When you change this, you'll notice errors appear in the Error List pane similar to:
Error 1 Validation error. Data Flow Task 1: Package: The requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered. If the 32-bit driver is not installed, run the package in 64-bit mode. Error code: 0x00000000. An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x80040154 Description: "Class not registered". Package.dtsx 0 0
Error 2 Validation error. Data Flow Task 1: Package: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine. For more information, see http://go.microsoft.com/fwlink/?LinkId=219816 Package.dtsx 0 0
These errors are related to SSDT and a point you made earlier which was:
When I looked at other drivers, they are also pointing to 32-bit version. (see screenshot below). Is there anything to do with this?
SQL Server Data Tools is a 32-bit application and is likely the reason why in the "Add SSIS Connection Manager" dialog you are seeing the Connection Managers pointing to 32-bit versions. Requests for 64-bit SSDT have been made quite some time ago. It also the reason these new errors are appearing pre-execution and in a pop-up message box if you attempt to execute your package.
Notice the errors are validation errors which hints at the solution.
Select your Excel Connection Manager, set the DelayValidation property to False. This will stop pre-execution errors showing. Secondly, either for the Package or for the Control Flow task that uses your Excel Connection Manager, set the DelayValidation property to False. This allows you to run the package and stop the errors at runtime.
Check if you have both versions of the DtsDebugHost.exe installed.
If you do you might need to install the latest service pack for Windows Server 2012.
reference

SSIS 2012 & Excel 2010 provider issue

I am using windows 7 64 bit,VS 2010 and MS Office 2010. Trying to build an ssis pkg using an excel source, the problem arises as below.
Could not retrieve the table information for the connection manager 'Excel Connection Manager'.
Failed to connect to the source using the connection manager 'Excel Connection Manager'
I found some solutions on internet, tried these steps by
1) installing the MS access database engine 2010 redistributable_x64.exe. I restarted the system, But still the problem persists. i couldnt find the provider in the list of providers in the oledb source and so selected the jet 4.0 oledb provider and changed the extended properties to Excel 12.0, then i get the following error:
Test connection failed because of an error in initializing provider. Could not find installable ISAM.
and also if i use excel source, its throwing me an error as given above on the top.
2) Also, changed the run 64bit runtime to false and also back to True again.
3) tried to change the platform of the project , but it is disabled.
Could yopu please help me. Thanks in advance.
You need to install the 32 bits provider.
Even though your windows is 64 bits, the SSDT development environment is a 32-bit environment. The reason why you cant find the provider in the list of providers is because it only shows 32-bit data providers. You can only see 64-bit providers that have a 32-bit version available on the development machine.
Though its bit late but might to very helpful for other guys.
Visual Studio 2010/2012 comes with 32-bit version only and hence it cannot use ACE OLEDB 64-bit version, which comes with installation of office 2010 64-bit version.
So the solution here would be uninstall 64-bit version office 2010 and install it's 32-bit version. Re-try to add the excel connection manager.
This has resolved my issue and hope for other guys as well.