SSIS Deployment: Connection Issue - sql-server

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

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

Transfer data from Excel to SQL Server using SSIS

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?

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

DTS_E_OLEDBERROR. Error code: 0x80004005.Difference between SQl Native client and oledb provider for sql server

There was a communication link error while I was using SQL Server Native Client 10 in an SSIS Data Flow component.
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 10.0" Hresult: 0x80004005
Description: "Communication link failure".An OLE DB record is
available. Source: "Microsoft SQL Server Native Client 10.0"
Hresult: 0x80004005 Description: "TCP Provider: The specified network
name is no longer available.
So I changed from SQL Server Native Client 10 to Microsoft OLEDB Provider for SQL Server, hoping that it would run fine. This time got an error as shown below:
[Transacn_Tbl1[737]] Error: 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 SQL Server"
Hresult: 0x80004005 Description: "Unspecified error occurred on SQL
Server. Connection may have been terminated by the server.".
[Transacn_Tbl1[737]] Error: SSIS Error Code
DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "input "OLE DB Destination
Input" (750)" failed because error code 0xC020907B occurred, and the
error row disposition on "input "OLE DB Destination Input" (750)"
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.
What is the difference between these 2 providers? Which one should I use?
I ran into this issue after releasing a new SSIS project to the production environment.
At first, I was able to validate the package with success, but when I tried to execute the package, I got the DTS_E_OLEDBERROR. Error code: 0x80004005. message.
I tried to validate the package with the servername and password variables set to sensitive, but in this case the validation failed as well.
After setting the environment variables back to non-sensitive again and inserting the environment variable values, I was able to validate and execute the package.
To me it seems like in some cases the metadata in the SSISDB gets corrupted, but unfortunately I've not been able to point down the source of this issue.
I hope this will help someone. I've went through a lot of debug scenarios before I ended up with this (rather unsatisfying) solution.
It looks like you have to resolve this issue, you must change the permissions for the Temp directory of the SQL Server Agent Service startup account. Grant the Read permission and the Write permission to the SQL Server Agent proxy account for this directory.
http://support.microsoft.com/kb/933835
I changed connection to Provider=SQLNCLI11.1 and executed
successfully with parameters.
DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005
This obscure error can also mean something as benign as the OLE provider cannot find the expected Excel Worksheet.
I recently came across this error in an SSIS project and after several hours trying to track down what I believed was some configuration issue, it turned out to be the end user had simply changed the name of a Worksheet in the Excel data source.
Microsoft Messaging FTW!

Resources