Transfer data from Excel to SQL Server using SSIS - sql-server

Problem statement: To transfer data from Excel to SQL Server.
I have a 64 bit system and 64 bit Microsoft Excel Installed. To make Excel Connection Manager work, I downloaded AccessDatabaseEngine.exe from https://www.microsoft.com/en-us/download/details.aspx?id=13255. I tried to see if it works with AccessDatabaseEngine_X64.exe and it didn't, so I just installed AccessDatabaseEngine.exe as you cannot install both apparently. In that way I was able to match columns and do things as required.
Then when I ran the project it throws errors as following-
Information: 0x4004300A at Data1, SSIS.Pipeline: Validation phase is beginning.
Error: 0xC0209303 at Package, Connection manager "Excel Connection Manager 3": 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 3": 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 Data1, DataImportFile [20]: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Excel Connection Manager 3" 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 Data1, SSIS.Pipeline: DataImportFile failed validation and returned error code 0xC020801C.
Error: 0xC004700C at Data1, SSIS.Pipeline: One or more component failed validation.
Error: 0xC0024107 at Data1: There were errors during task validation.
I tried to see many videos on Youtube and went through some blogs. But I am unable to understand the situation here. What could be missing here?

Related

SSIS tasks are getting fail with Communication link failure error

In a SSIS package I have an OLED Source, a look up transformation and an OLE DB destination task. I'm running my package on VS 2019 but the tasks(OLED Source, OLE DB destination) are getting fail after 10 to 15 minutes with below error:
[OLE DB Destination [27]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "Communication link failure".
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "TCP Provider: The semaphore timeout period has expired.
".
[OLE DB Destination [27]] Error: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "OLE DB Destination.Inputs[OLE DB Destination Input]" failed because error code 0xC020907B occurred, and the error row disposition on "OLE DB Destination.Inputs[OLE DB Destination Input]" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "OLE DB Destination" (27) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (40). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.
[OLE DB Source [66]] Error: The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on OLE DB Source returned error code 0xC02020C4. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure.
I tried to fix this issue by setting validateExternalMetadata as false for the tasks but no luck.
I also checked others answers on stack overflow for almost the similar issues/ques. but that also didn't help.
Note: SSIS connection manager is using SQL server authentication and DB is Azure SQL
appreciate your help if any.
From my experience this error can have various reasons. For example this can be caused by the server being overloaded, or due to bad network. One thing you could try is to change the caching mode of your lookup component. I'm assuming it's running in "Full cache" mode, meaning that all the data in the lookups query will be read into memory of the SSIS server before doing the lookup. Changing this to "No cache" for example will result in the lookup query being run for every row that's fed into the component. "Partial cache" will cache, but only as each distinct value is encountered in the data flow. These other methods will put less load on memory of the SSIS server but more load on the lookup source database. If it works one option might be to increase RAM of the SSIS server.
I see that you are using a deprecated "Microsoft SQL Server Native Client 11.0"
Starting from 2018, it is better to use Microsoft OLE DB Driver for SQL Server
It is optimized for Azure, and has lots of new functionality.
Released: Microsoft OLE DB Driver for SQL Server
Microsoft OLE DB Driver for SQL Server

SSIS Data Flow Task Errors : SSIS Error Code DTS_E_OLEDBERROR and SSIS Error Code DTS_E_PRIMEOUTPUTFAILED

In my Data Flow Task (DFT ), I have OLE DB Source and Destination . In connection manager, my connection is OLE DB too.
Source is pulling 80000 records and loading in Desti. Simple package.
My Package is breaking on OLE DB Source.
The point to note is : It loads 53769 records very fine. But at the end it breaks on OLE DB Source.
Error:
[OLE DB Source [235]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE
DB error has occurred. Error code: 0x80004005. An OLE DB record is
available. Source: "Microsoft SQL Server Native Client 11.0"
Hresult: 0x80004005 Description: "Protocol error in TDS stream". An
OLE DB record is available. Source: "Microsoft SQL Server Native
Client 11.0" Hresult: 0x80004005 Description: "Communication link
failure". An OLE DB record is available. Source: "Microsoft SQL
Server Native Client 11.0" Hresult: 0x80004005 Description: "Shared
Memory Provider: No process is on the other end of the pipe.
[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The
PrimeOutput method on OLE DB Source returned error code 0xC0202009.
The component returned a failure code when the pipeline engine called
PrimeOutput(). The meaning of the failure code is defined by the
component, but the error is fatal and the pipeline stopped executing.
There may be error messages posted before this with more information
about the failure.
Can anyone help me please to solve this error?
This is my production environment.
Communication link failure
Shared Memory Provider: No process is on the other end of the pipe
The error messages above imply that there may be some network issues between the servers or the machine resources (especially RAM) are not able to handle the data.
You can try to change the adjust the data flow task buffer size.
Or you may try to load data in chunks, you can refer to the following article for a step-by-step guide:
SQL OFFSET FETCH Feature: Loading Large Volumes of Data Using Limited Resources with SSIS
I fixed it changing the Provider from SQL Server Native Client to Microsoft OLEDB Provider for SQL Server - it worked like a charm.

SSIS Excel File issue - Failure creating file

I have SSIS package that grabs excel file and load it to sql table .i get the following error when i run it. I have tried to make run on 64 bit to false. That did not work
i also have installed 64 bit access driver engin . That did not help either.
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 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
Error at Data Flow Task [SSIS.Pipeline]: Excel Source failed validation and returned error code 0xC020801C.
Error at Data Flow Task [SSIS.Pipeline]: One or more component failed validation.
Error at Data Flow Task: There were errors during task validation.
Error at ABC [Connection manager "Excel Connection Manager"]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft Access Database Engine" Hresult: 0x80004005 Description: "Failure creating file.".
Failure creating file
This error is thrown when the Excel connection manager cannot access to the chosen path, it might be caused by:
You are using a network path / try replacing with a local path
it might be pointed to your local server, but when it is deployed to another server it will throw error
you do not have permission to access the selected path from the account that is running the SSIS
path does not exists
I had the same error, to fix it I specified the IP of the shared folder instead of FQDN.
I had the same error too, my files are save in a folder OneDrive.
I fix the error by moving the files out from Onerive

Package deployment error - change connection string to SQLNCLI10 or find and install support for SQLNCLI.1?

I tried to run a package under SQL server agent. Most of my error messages indicate that I have to - change connection string to SQLNCLI10 or find and install support for SQLNCLI.1.
I need to know the meaning of this error. Is it as simple as installing a driver and registering it or is it more than just drivers. Could there be non-driver related reasons for this problem ? I changed the provider as mentioned in the error and now i get new errors, which are given after 1st error.
Thanks.
Full error -
Code: 0xC0209302 Source: MyPackage Connection manager "MyOleDBConnection" Description: SSIS Error Code DTS_E_OLEDB_NOPROVIDER_ERROR. The requested OLE DB provider SQLNCLI.1 is not registered.
Error code: 0x00000000. An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x80040154 Description: "Class not registered".
End Error
Code: 0xC020F42A Source: MyPackage Connection manager "MyOleDBConnection" Description: Consider changing the PROVIDER in the connection string to SQLNCLI10 or
visit http://www.microsoft.com/downloads to find and install support for SQLNCLI.1.
End Error
Code: 0xC020801C Source: MyPackage Log provider "SSIS log provider for SQL Server" Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.
The AcquireConnection method call to the connection manager "MyOleDBConnection" failed with error code 0xC0209302.
There may be error messages posted before this with more information on why the AcquireConnection method call failed.
COM error object information is available. Source: "MyPackage" error code: 0xC0209302
Description: "Consider changing the PROVIDER in the connection string to SQLNCLI10 or
visit http://www.microsoft.com/downloads to find and install support for SQLNCLI.1. ".
End Error
Code: 0xC0209302 Source: MyPackage Connection manager "MyOleDBConnection" Description: SSIS Error Code DTS_E_OLEDB_NOPROVIDER_ERROR.
The requested OLE DB provider SQLNCLI.1 is not registered. Error code: 0x00000000.
An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x80040154 Description: "Class not registered".
End Error
Code: 0xC020F42A Source: MyPackage Connection manager "MyOleDBConnection" Description: Consider changing the PROVIDER in the connection string to SQLNCLI10 or
visit http://www.microsoft.com/downloads to find and install support for SQLNCLI.1.
End Error
Code: 0xC020801C Source: DFT Insert Execution Log OLE_DST Insert SSIS Execution Log [25] Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.
The AcquireConnection method call to the connection manager "MyOleDBConnection" failed with error code 0xC0209302.
There may be error messages posted before this with more information on why the AcquireConnection method call failed.
End Error
Code: 0xC0047017 Source: DFT Insert Execution Log SSIS.Pipeline Description: component "OLE_DST Insert SSIS Execution Log" (25) failed validation and returned error code 0xC020801C.
End Error
Code: 0xC004700C Source: DFT Insert Execution Log SSIS.Pipeline Description: One or more component failed validation.
End Error
Code: 0xC0024107 Source: DFT Insert Execution Log Description: There were errors during task validation.
End Error
DTExec: The package execution returned DTSER_FAILURE (1).
One more error -
Code: 0xC0202009 Source: MyPackage Connection manager "MyOLEDBConnection" Description: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E4D.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E4D Description: "Login failed for user 'MyUser'.".
End Error
Code: 0xC020801C Source: MyPackage Log provider "SSIS log provider for SQL Server" Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection
method call to the connection manager "MyOLEDBConnection" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method
call failed. COM error object information is available. Source: "MyPackage" error code: 0xC0202009 Description: "SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E4D.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E4D Description: "Login failed for user 'MyUser'.". ".
End Error
Code: 0xC0202009 Source: MyPackage Connection manager "MyOLEDBConnection" Description: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E4D.
An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E4D Description: "Login failed for user 'MyUser'.".
End Error
Code: 0xC020801C Source: DFT Insert Execution Log OLE_DST Insert SSIS Execution Log [25] Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.
The AcquireConnection method call to the connection manager "MyOLEDBConnection" failed with error code 0xC0202009. There may be error messages posted before this with more information
on why the AcquireConnection method call failed.
End Error
Code: 0xC0047017 Source: DFT Insert Execution Log SSIS.Pipeline Description: component "OLE_DST Insert SSIS Execution Log" (25) failed validation and returned error code 0xC020801C.
End Error
Code: 0xC004700C Source: DFT Insert Execution Log SSIS.Pipeline Description: One or more component failed validation.
End Error
Code: 0xC0024107 Source: DFT Insert Execution Log Description: There were errors during task validation.
End Error
Understanding the problem
The SQL Server Native Client provider is SQLNCLI* in an OLE DB Connection String.
2005 uses SQLNCLI.1
2008 uses SQLNCLI10
2012 uses SQLNCLI11
As of this posting, there is not a SQLNCLI12 included with the CTP2 release of SQL Server 2014.
These providers can generally talk to previous versions of SQL Server but version forwardness is less probable (with the exception of SQLNCLI11 communicating with 2014).
Root cause
You have an OLE DB Connection string using a provider that does not exist on that machine. Perhaps you built the package in a 2005 format but are running it on a 2008 instance. At any rate, your connection strings in the format of
Provider=SQLNCLI.1;Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
would need to be updated to match the provider on the machine
Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
This can generally be addressed through judicious use of Configurations

SSIS Deployment: Connection Issue

I am facing an issue while deploying my SSIS packages to a target machine.
I have done the deployment through an indirect XML configuration. I use one parent package which invokes all the other child packages in loading a data warehouse. Child packages acquire the database connections via a parent package variable. Thus an isolated child package is not executable.
In this setup the flow works perfectly in my development machine. But when I try to deploy it to another one some packages run and populate the tables while others with the same configurations fail. I have made the "Delay Validation" property to true in all the child packages as well.
Follwing are the errors I get in order:
Error 17 Validation error. Extract and Populate Data to DimRetailer: DimRetailer: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft OLE DB Provider for ODBC Drivers" Hresult: 0x80004005 Description: "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified". DimRetailer.dtsx 0 0
Error 18 Validation error. Extract and Populate Data to DimRetailer: Extract and Populate Data to DimRetailer: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Con_XONTRDDATAMART_OLEDB" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed. DimRetailer.dtsx 0 0
Error 19 Validation error. DimRetailer Connection manager "Con_XONTRDDATAMART_OLEDB": SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft OLE DB Provider for ODBC Drivers" Hresult: 0x80004005 Description: "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified". DimRetailer.dtsx 0 0
Error 20 Validation error. Extract and Populate Data to DimRetailer Expire Old SCD2 Rows [617]: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Con_XONTRDDATAMART_OLEDB" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed. DimRetailer.dtsx 0 0
What I can not realize is why some packages run alright while others fail which share the same connections.
Additionally, the final deployment will be on a server with a 64 bit OS, are there any steps I should specifically take to make the deployment run smoothly?
Thank you very much for any contribution, in advance.
I have a setup similar to yours. However, what i share to child packages is a connection string. It might be worth a try if you are still facing the same issue

Resources