OLE DB provider Microsoft.ACE.OLEDB.15.0 Mssing - ssis

I have deployed SSIS package that fetch data from Microsoft Access database. it works fine Locally and on Server i am running it using DTESEX 32 bit but getting following error
The requested OLE DB provider Microsoft.ACE.OLEDB.15.0 is not registered. If the 32-bit driver is not installed, run the package in 64-bit mode. Error code: 0x00000000.
How can i make sure that OLE DB provider Microsoft.ACE.OLEDB.15.0 exist on server

I tried importing data from 64bit excel file into SQL using SSMS's import wizard and got got this error :microsoft ace oledb 15.0 provider is not registered on the local machine.
One of my colleagues showed me to use 64bit import wizard rather than 32 bit defualt import wizard that I have in SSMS. Here is a short video I posted about successfully loading the data on youtube
https://www.youtube.com/watch?v=aIs-vbaGSzg

Per #Gaurav Saneja's answer, you can use the "SQL Server 2016 Import and Export Data (64-bit)" (found in start menu). SSMS is 32-bit, so it attempts to load the 32-bit version of the DLL, but fails because you (likely) have the 64 bit version of Office installed.
Some people are recommending the installation of AccessRuntime_x86_en-us.exe from
https://www.microsoft.com/en-us/download/details.aspx?id=39358
however, for me this fails with the error:
We can't install the 32-bit version of Office because we found the following 64-bit programs on your PC: -list of installed Office apps here-
Until Microsoft provides a 64-bit version of SSMS, we are stuck using the method of launching the 64-bit version of the Data Import wizard independently (as described above).

Please try installing the Access 2013 runtime on the server, which should enable the use of that provider (at least in 32-bit).
The exception indicates that it is not able to find the OLE DB provider specified, which can be installed through standard Access installations or by installing the runtime.

Environment:
Machine (64bit)
Operating System Windows 10 Pro (64bit)
Visual Studio 2017 (32bit)
Visual Studio 2017 (SSDT) (32bit)
Office 2016 (64bit)
Attempted to use Excel in SSIS. Received the following errors: when I select 2016 or 2013 in connection manager. Issue to be resolved.
Error for 2016:
Exception from HRESULT: 0xC020801C Error at Package: The requested
OLE DB provider Microsoft.ACE.OLEDB.16.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".
Error at Data Flow Task [Excel Source [2]]: SSIS Error Code
DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The
AcquireConnection method call to the connection manager "Excel
Connection Manager" failed with error code 0xC0209302. There may be
error messages posted before this with more information on why the
AcquireConnection method call failed.
Error for 2013:
Exception from HRESULT: 0xC020801C Error at Package: The requested
OLE DB provider Microsoft.ACE.OLEDB.15.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".
Error at Data Flow Task [Excel Source [2]]: SSIS Error Code
DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The
AcquireConnection method call to the connection manager "Excel
Connection Manager" failed with error code 0xC0209302. There may be
error messages posted before this with more information on why the
AcquireConnection method call failed.
Solution:
Installed the following:
I needed 64bit Access Database Engine 2016 Redistribution for another portion of the project. Unstalling it was not a solution, but the 2007 Data connectivity component and Data Access Engine 2016 can live side by side:
2007 (USE 32bit) : 2007 Office System Driver Data Connectivity Components
https://www.microsoft.com/en-us/download/details.aspx?id=23734
2016 (USE 64bit) : Microsoft Access Database Engine 2016 Redistributable
https://www.microsoft.com/en-us/download/details.aspx?id=54920
Finally:
Inside of Visual Studio 2017 (SSDT) follow the following instructions to Adjust Project:
Open SSIS project
Select the project in Solution Explorer
Select Properties
Expand Configuration Properties in the left pane
Click Debugging and change Run64BitRuntime to False
Click OK
Adjust Connection Manager:
7. Open Excel Connection Manager
8. Click the drop-down menu. Excel Options work:Excel 97-2003 and Excel 2007-2010
9. Click Ok
Open Excel Source component:
10. Select the Excel connection manager
11. Select Table View from Data Access Mode
12. Select Excel Sheet
You should be able to Preview the data in the Excel sheet

Related

SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER converting XLS to TXT

I started a new job with a brand new laptop and vanilla environment.
I have installed Visual Studio and I'm trying to convert a XLS file to TXT. This is my Control Flow:
And this is my Data Flow:
When I run the package I incur in the notorious error:
SSIS package "C:\Users\fmv\source\repos\XtoT\XtoT\Package.dtsx" starting.
Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning.
Error: 0xC0209303 at Package, Connection manager "Excel Connection Manager 2": The requested OLE DB provider Microsoft.ACE.OLEDB.12.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".
Error: 0xC001002B at Package, Connection manager "Excel Connection Manager 2": 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
Error: 0xC020801C at Data Flow Task, Excel Source [2]: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Excel Connection Manager 2" failed with error code 0xC0209303. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
Error: 0xC0047017 at Data Flow Task, SSIS.Pipeline: Excel Source failed validation and returned error code 0xC020801C.
Error: 0xC004700C at Data Flow Task, SSIS.Pipeline: One or more component failed validation.
Error: 0xC0024107 at Data Flow Task: There were errors during task validation.
SSIS package "C:\Users\fmv\source\repos\XtoT\XtoT\Package.dtsx" finished: Failure.
The program '[18396] DtsDebugHost.exe: DTS' has exited with code 0 (0x0).
I tried to switch the connector to Microsoft.ACE.OLEDB.16.0 but the error is the same.
So I read some guide and they mostly suggest to download Microsoft Access Database Engine. So I download the Microsoft Access Database Engine 2016 Redistributable and when I run the 32-bit it says:
You cannnot install the 32-bit version of Microsoft Access Database Engine 2016 because you currently have 64-bit Office products installed. If you want to install 32-bit Microsoft Access Database Engine 2016, you will first need to remove the 64-bit installation of Office products. After uninstalling the following product(s), rerun setup in order to install 32-bit version of Microsoft Access Database Engine 2016: Office 16 Click-to-Run Extensibility Component 64-bit Registration
So I tried with the 64-bit instead and the computer says:
You cannnot install the 64-bit version of Microsoft Access Database Engine 2016 because you currently have 32-bit Office products installed. If you want to install 64-bit Microsoft Access Database Engine 2016, you will first need to remove the 32-bit installation of Office products. After uninstalling the following product(s), rerun setup in order to install 64-bit version of Microsoft Access Database Engine 2016: Microsoft Access database engine 2010 (English), Office 16 Click-to-Run Extensibility Component
...so, which is which? I currently have Microsoft® Outlook ® for Microsoft 365 MSO (16.01380120442) 32-bit.
So I found anotherguide here on StackOverflow that said that the right version I need is Microsoft Access Database Engine 2010 Redistributable. And it was true, at least I was able to install the 32-bit.
But apart from that I'm still experiencing the problem even if I don't have red dots on the control Flow or on the Data Flow.
Any idea about how to try next?

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

Microsoft.ACE.OLEDB.12.0 "provider not registered" after Access installation

I have a SQL Server 2008 on Windows 64-bit Windows Server(2007). It is okay when I imported data from Excel file in SQL Server Management Studio with Tasks.
Then I installed Access from 64-bit offices 2010 for OLE DB driver Microsoft.ACE.OLEDB.12.0.
After that, I can import excel file with Tasks any more. The error message is:
The provider is not registered on the local machine(system.data)
but Microsoft.ACE.OLEDB.12.0 is fine and can be used in code for OpenQuery.
Confused. How to resolve this problem?

SSIS Package Fails After Move to 64-bit

We've got a a series of SQL Server Integration Services packages that copy data from a few MS Access databases into a SQL Server 2008 database. There is one parent package that calls the various sub-packages, and that parent package is initiated by a user that runs a .bat file that executes the package like so:
dtexec /f "\\networkshare\package.dtsx" /CHECKPOINTING OFF /REPORTING EWCDI
This has worked fine for several years. Our IT department has begun upgrading our 32-bit Windows XP workstations to 64-bit Windows 7 and since they've upgraded the workstations of these users, the package has been failing, giving the error
-1071607037,0x,SSIS Error Code DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR. The requested OLE DB provider MICROSOFT.JET.OLEDB.4.0 is not registered -- perhaps no 64-bit provider is available. Error code: 0x00000000.
An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x80040154 Description: "Class not registered".
My workstation has not yet been upgraded from Windows XP and I'm still able to run the packages but my ability to postpone the upgrade is running out and I need to figure out a solution as soon as possible. I've found many articles and posts related to this in my efforts to resolve the issue. Among the things I've tried are:
After ensuring that the users had the Client Tools and Business Intelligence Development Studio installed and that the path is valid, changing the contents of the .bat file to specifically reference “C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\dtexec.exe” in the hope that the 32-bit JET provider would be used
Researched the Run64BitRuntime setting but this appears to only have an effect while debugging and won't help me
Researched adding the /X86 flag to the command line but according to the MSDN article on dtexec, this only has an effect if the SQL Server Agent is running the task
The last thing I've tried was to install the Microsoft Access Database Engine 2010 Redistributable and change the connection string from "Provider=Microsoft.Jet.OLEDB.4.0;" to "Provider=Microsoft.ACE.OLEDB.12.0;". I can't seem to get off the ground with this one. If I try to create a new connection in BIDS and set the provider to "Microsoft Office 12.0 Access Database Engine OLE DB Provider" and test the connection, I get the error "Test connection failed because of an error in initializing provider. Unspecified error".
I'm just about at a loss for what else I can try and looking for any help at all, even if it's trying the things I've already tried, maybe I've configured something wrong while trying them originally, not sure.
Any help would be immensely appreciated!
In SQL Agent job or by just executing the package by itself there is a tab called "Execution options", you can select "Use 32 bit runtime" option
By default, SQL Server puts the 64-bit version of DTEXEC in the path. The 32-bit version should be located somewhere like C:\Program Files(x86)\Microsoft SQL Server\100\DTS\Binn and would need to be called directly. I had the same issue with the ACE drivers and Excel files.
See this for more information.
I was able to run it successfully by changing debugging setting in project property page. Property to change is Run64BitRuntime -> set this to false.

Error running SSIS package: VSTA designer failed to load

When I try to execute a package which uses the Scripting Component object I get the following error:
Error: 2011-07-22 09:16:42.25
Code: 0x00000003
Source: {Task Name Here}
Description: There was an exception while loading Script Task from XML: System.ApplicationException: The VSTA designer failed to load: "System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component`enter code here`
I am running on a database server that has both SQL2005 and SQL Server 2008 R2 (RTM) - 10.50.1720.0 (X64).
I tried to execute the package using both the 32 and 64 bit versions with the same result.
I originally had an issue on my development machine where the Visual Studio for Applications Designer was not coming up when I tried to use the Scripting Object within an SSIS package for the first time. i resolved this by installing the latest SP for Visual Studio. Obviiously, loading visual Studio is not a possible solution to resolve this issue on a SQL Server.
Sugegstions?
Some Googling suggests you're executing a 2005 package with the 2008 runtime. Assuming that's the case, you can either use the 2005 runtime or upgrade the package.