Oracle connection issues from SSIS - sql-server

Getting connection error on oledb source from the SSIS package to import the data from oracle to sql server. It is failing after deploying to server but runs fine when being run from BIDS from local machine. The package is developed in 2008.
Is there any installation needed on server for oracle?
The following error is being displayed
Source: Connection manager Description: SSIS Error Code
DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR. The requested OLE DB provider
MSDAORA.1 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". Code: 0xC020801C OLE DB
Source [1] Description: SSIS Error Code
DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The
AcquireConnection method call to the connection manager failed with
error code 0xC0209303. There may be error messages posted before this
with more information on why the AcquireConnection method call failed.
Code: 0xC0047017 Source: SSIS.Pipeline Description: component
"OLE DB Source" (1) failed validation and returned error code
0xC020801C. End Error Error: 2019-06-18 22:54:18.99 Code:
0xC004700C Source: Pipeline Description: One or more component
failed validation.
When I am validating the package, there it is giving ORA-01017: invalid username/password; but the same credentials are used while running from local machine.
I am running it in 32 bit but still the error persists
Also tried with ProtectionLevel as Dontsavesensitive but no luck

Yes, you need to install an Oracle client. The bare Instant Client should be sufficient as you use the deprecated MSDAORA OLE DB provider from Microsoft.
If you like to use the Oracle Provider for OLE DB (OraOLEDB.Oracle) then you must install the provider. It is not included in the Instant Client.
Ensure that the architecture (i.e. 32-bit or 64-bit) is the same as your application. Your question is not clear in that. You write "I am running it in 32 bit" but the error message "The requested OLE DB provider MSDAORA.1 is not registered -- perhaps no 64-bit provider is available." indicates 64-bit.
Note, old MSDAORA provider from Microsoft exist only for 32-bit. If you need a 64-bit version then you must take the provider from Oracle.
32-bit drivers can be downloaded from 32-bit Oracle Data Access Components, the 64-bit drives are available at 64-bit Oracle Data Access Components

You need to install Oracle drivers on the production machine. If I remember one way to do it is to install the x64 Oracle client software for Windows. Its enormous but it seems to work. This has worked for me.
According to this stackoverflow answer you can manually install the drivers but its a lot of steps:
https://serverfault.com/questions/175257/how-to-install-oracle-ole-drivers-for-use-in-sql-server-2008-r2-x64

Related

Error when importing Excel in SSIS

I am trying to import Excel sheet into SQL server through SSIS
The file was generated by SQL Server import task from another machine.
but when I try to run it the SSIS on my machine/Server
I get this error
TITLE: Package Validation Error
Package Validation Error
ADDITIONAL INFORMATION:
Error at Data Flow Task 1 [Source - 'detail_report (4)$' [53]]: SSIS
Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The
AcquireConnection method call to the connection manager
"SourceConnectionExcel" failed with error code 0xC0209302. There may
be error messages posted before this with more information on why the
AcquireConnection method call failed.
Error at Data Flow Task 1 [SSIS.Pipeline]: Source - 'detail_report
(4)$' failed validation and returned error code 0xC020801C.
Error at Data Flow Task 1 [SSIS.Pipeline]: One or more component
failed validation.
Error at Data Flow Task 1: There were errors during task validation.
Error at MobUp02 [Connection manager "SourceConnectionExcel"]: 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".
Error at MobUp02 [Connection manager "SourceConnectionExcel"]: 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
(Microsoft.DataTransformationServices.VsIntegration)
I googled that and changed Run64bitRuntime to False, yet problem still exist
Anyone know how to fix that??
The requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered.
I think you should download the Access Database Engine 2010 32-bit:
Microsoft Access Database Engine 2010 Redistributable
Additional information
SSIS The requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered
The requested OLE DB provider Microsoft.ACE.OLEDB.12.0 is not registered
You can do 2 workarounds to solve importing excel using 64-bit ms office:
Using an OLEDB Source instead of Excel Source
Using SQL Server Import and Export Wizard
Check the following detailed article, it contains very helpful information:
Importing data from 64-bit Excel in SSIS
Try to install access runtime 2010 and if not solve then access runtime 2007. It may solve your error.
Select 32 Or 64 bit as per your system.
Try to Check the following:
Server BI Installed Version
Install same Excel version on your machine
Put Excel File on same path or Change Excel source File path with your machine path.
Select the Project (not the solution) in Solution Explorer window, then from the Visual Studio 2019 menu select:
Project -> Properties
The Property Pages window opens, then select:
Configuration Properties -> Debugging -> Debug Options -> Run64BitRuntime
Put that option on False and the error will disappear. It worked for me.
As I was also facing this issue and I resolved it by installing this "Microsoft Access Database Engine 2010" software
Below I am attaching the link to download that software you need to install in local as well as the server where that SSIS package will run
Link-Cick here to download Microsoft Access Database Engine 2010

Why is my SQL Server job using an SSIS package failing but that same SSIS package is running successfully in Visual Studio?

I have created an SSIS package in Visual Studio using the SSIS Import and Export Wizard and when I run it there, it runs successfully. Basically, the SSIS package runs a sql query on my SQL Server database and exports the results into an Excel file.
I have wrapped that package into a SQL Server job and scheduled it to run at a specific time. I noticed that it failed and the log file shows the following error messages:
Microsoft (R) SQL Server Execute Package Utility Version 12.0.5000.0 for 64-bit Copyright (C) Microsoft Corporation. All rights reserved. Started: 4:44:00 PM Error: 2017-10-12 16:44:00.59 Code: 0xC0016016 Source: ExpExcel Description: Failed to decrypt protected XML node "DTS:Password" with error 0x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when there is a cryptographic error. Verify that the correct key is available. End Error Error: 2017-10-12 16:44:00.68 Code: 0xC0209303 Source: ExpExcel Connection manager "DestinationConnectionExcel" Description: 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". End Error Error: 2017-10-12 16:44:00.68 Code: 0xC00291EC Source: Drop table(s) SQL Task 1 Execute SQL Task Description: Failed to acquire connection "DestinationConnectionExcel". Connection may not be configured correctly or you may not have the right permissions on this connection. End Error Error: 2017-10-12 16:44:00.68 Code: 0xC0209303 Source: ExpExcel Connection manager "DestinationConnectionExcel" Description: 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". End Error Error: 2017-10-12 16:44:00.68 Code: 0xC00291EC Source: Preparation SQL Task 1 Execute SQL Task Description: Failed to acquire connection "DestinationConnectionExcel". Connection may not be configured correctly or you may not have the right permissions on this connection. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 4:44:00 PM Finished: 4:44:00 PM Elapsed: 0.219 seconds. The package execution failed. The step failed.,00:00:00,0,0,,,,0
I am having a hard time trying to figure out how to debug these errors and finding the solution. If my SSIS package is running fine in Visual Studio (installed on that same machine as SQL Server), then why is it failing as a SQL Server job?
I must also add that Microsoft Office is not installed on that machine. Could that possibly be the cause?
You need to enable 32bit on your SQL Job agent step - And if that doesnt work you need to install OLDB ACE Driver for EXCEL
Driver link:
Microsoft ACE Driver
And as others point out. Your project protection level needs to be the same as the package protection level. You can change that under properties of the package and project.
How to set 32bit on step in SQL Job Agent on step
When you created the package it probably got set up with a User Key protection level. Meaning that any sensitive information (passwords) get encrypted with your user key. By extension, this means only you can really open/run the package. Your best bet (requiring the least amount of effort in my opinion) is to encrypt the package with a password and then you can specific that password as you are creating your SQL Agent job.

Running SSIS package through SQL server agent

I have an SSIS package with excel connection manager. Thus, I need to run it in 32-bit environment.
I configured the SQL-server job to run in 32-bit environment by doing the following:
Job properties-> Execution options-> use 32 bit runtime.
But I am getting this error:
Code: 0xC0209302 Source: Package Connection manager "Excel Connection Manager" Description: 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". End Error Error: 2017-02-16 10:14:22.94 Code: 0xC001002B Source: Package Connection manager "Excel Connection Manager" Description: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
Please suggest a way in which I can run the SSIS package through sql-server job agent. Thanks!
Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
You need to download new data access engine, what I am guessing is you were trying to deploy a package to the server with old data access engine installed such as jet
here is the link:
https://www.microsoft.com/en-us/download/details.aspx?id=13255
login to the target server, download either 32-bit or 64-bit based on your server version and installed. After that everything should be fine.
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.
Check if you have configured to run package in correct architecture.
Navigate in SSDT to Project>>Properties>>Debugging>>Run64 bit Runtime>> Set True/False acc to arch of your machine and check.

SSIS: The requested OLE DB provider SQLNCLI10.1 is not registered

I'm trying to update my ETL jobs on a new reporting server and I got this error:
Microsoft (R) SQL Server Execute
Package Utility Version 13.0.1601.5 for 64-bit Copyright (C) 2016
Microsoft. All rights reserved. Started: 3:44:21 PM Error:
2016-12-28 15:44:22.24 Code: 0xC0209303 Source: FactCOGS
Connection manager "MyConnection" Description: The requested OLE
DB provider SQLNCLI10.1 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".
End Error Error: 2016-12-28 15:44:22.24 Code: 0xC020F42A
Description:
Consider changing the PROVIDER in the connection string to SQLNCLI11
or visit http://www.microsoft.com/downloads to find and install
support for SQLNCLI10.1. End Error Error: 2016-12-28 15:44:22.24
Code: 0xC020801C Source: Load Stage OLE DB Source [149]
I tried changing the provider in my config file to SQLNCLI11 as it suggests which seemed to fix the problem for others but I am still getting the same error.
Drivers on report server:
I had to finish this today so I ended up installing the SQLNCLI10 drivers on the new report server and everything worked again. If I find a better solution in the future I will update my answer.
Edit the job step. Go to "Execution options". Try checking "Use 32 bit runtime" option.
I got the same message running a SSIS DTSX Package created on Visual Studio 2008 and deployed on SQL Server 10.50.6560. I fixed the problem by going to the SSIS Solution Properties -> Debugging -> Debug Options -> Run64BitRuntime -> Set to TRUE. It workout just fine, hope it helps.
I had the same error after adding a exporting a package from one solution to another solution. I was able to resolve the Error by open the solution in visual Studio -> open connection(s) used in the package -> test connection(s).
I re-ran the the package and the error was gone.

Migration of SSIS packages from 2008 to 2012

We are trying to migrate all SSIS packages from 2008 R2 to 2012 version. I have changed config file to native client 11 and also made changes to the individual connection managers.
But, I am still getting this errors.
Can anyone please help me in solving these errors:
[Connection manager "xxxxxxxx"] Error: The requested OLE DB provider SQLNCLI10.1 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".
[Connection manager "xxxxxxx"] Error: Consider changing the PROVIDER in the connection string to SQLNCLI11 or visit http://www.microsoft.com/downloads to find and install support for SQLNCLI10.1.
[Log provider "SSIS log provider for SQL Server"] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "xxxxxxx" failed with error code 0xC0209303. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
Thanks a lot in advance!!
IF you go right click on your project name and under the debugging tab you can change the Run64BitRuntime to False and that may fix that problem.

Resources