SSIS package failing with system resource exceeded error - sql-server

I have an excel file connection manager which is around 200 MB from there we are loading file into SQL tables after using lookup container that uses full cache mode and a connection type as oledb Connection manager, rows are being redirected to no match output, everything works fine until number of unique rows cached steps, I have around 15 million rows that gets cached, after this step, the execute phase should start but what happens is that it completely skips execute phase and started post execute phase and write zero rows in the destinations and get failed, the error we get is Source: "Microsoft JET Database Engine"  Hresult: 0x80004005  Description: "System resource exceeded.".
Any help that can solve this is really appreciated

Related

SQL Server Agent Job stops SSIS Step with "unexpected error" and without any error informations

I am dealing with my problem on some Windows Server 2019 (Core) with one running SQL Server 2019 CU4 instance each.
What we try to do
We are currently building a data warehouse with distributed databases. The individual layers of the DWH are located on one database server each. The data exchange between the layers/servers takes place via SSIS ETLs, which use Linked Servers to reach the other layers and drag and drop data. Each layer also has its own SSIS service instance and executes the corresponding SSIS packets.
The SSIS packages are called by SQL Server Agent jobs. We have a job that executes the SSIS packets (#1), which in turn calls another job (#2) as the last step, which after a short wait time executes the calling job (#1). Thus, controlled by schedules, a loop is created and data is continuously transferred with ETLs.
I hope this was not too much unnecessary background
The error
Basically the job is running and there are numerous successful executions. However, we are observing interruptions at job #1 without helpful information regarding the error. This means that the job history log refers to the SSIS log, which again only contains an "unexpected termination". In the SSIS log, we only see behavior that indicates that the ETL packet active at that time stopped after validation. Depending on the log level, nothing is logged at all, not even the execution of single packages of the project. The package where this error occurs is different and not limited to a specific one.
What I have already tried
Re-create the jobs and SSIS Enviroments by hand (scripted before)
Using the 32Bit Runtime
Upgrade the SSIS project/package version to
2019
Increase the log level to "verbose"
Patching the SQL Server to CU4
Save ssis dump files (couldn't find them or they weren't created)
Search Windows and SQL Server Logfiles
Does anyone have some suggestions or some ideas how to become more error specific informations?
Thank you very much and take care :)
UPDATE We have an error message (OLE DB 0xC0202009 and 0X80004005)!
In order to exclude the use of environments as a cause, I manually set the parameters in the SSIS job step instead of overwriting them by selecting an environment.
Long story short: Today it turns out that the parameter for an OLE DB Connection String is not passed correctly.
The following is specified as a parameter in the job step:
However, the following connection string is specified in the context of the error message:
Please note that some arguments are added twice to the parameter (red).
What could have caused that?

SSIS OLE DB Source - move cache location

When SSIS package is run by scheduler on server, the disc C: gets full and computation crashes with error Failed to retrieve long data for column "Col1".
Package has 3 steps:
OLE DB Source - Retrieve whole table with binary data - this step fails
Script Component - Compute hash of each data
OLE DB Destination - Save hash to different table
If I run sql script from 1) in Management Studio SQL Query, it fails with error: "An error occurred while executing batch. Error message is: There is not enough space on the disk."
Is it possible to move any caching of this particular package to other disc?
Or to move caching of all packages to other disc?
By other disc I mean disc, where neither SQL Server is installed, nor SQL Server Data are saved.
Changing Tools > Options: Query Results > SQL Server > General: Default location for saving query results in Management Studio did not help.
Thanks
When you go to the 'Data Flow' Tab, right click anywhere not on a task and select properties.
There will be two items
BLOBTempStoragePath
BufferTempStoragePath
you can change the location there.

SSIS connection string error: ..."must consist of one or more components of the form X=Y, separated by semicolons...." .

I am getting this error in my SSIS environment.
I have a package that imports a CSV file into a staging table. In my efforts to find out what is causing the error - I have disable every step (one-by-one) in the package. So now my output log looks like this:
SSIS package "C:***\Stage - Load Monthly Statistics CSV.dtsx" starting.
Information: 0x40016042 at Stage - Load Monthly Statistics CSV: The package is attempting to configure from the parent variable "User::BatchID".
Warning: 0x8001201A at Stage - Load Monthly Statistics CSV: Configuration from a parent variable "User::BatchID" did not occur because there was no parent variable collection.
Error: 0xC0024108 at Stage - Load Monthly Statistics CSV: The connection string format is not valid. It must consist of one or more components of the form X=Y, separated by semicolons. This error occurs when a connection string with zero components is set on database connection manager.
Error: 0xC0024108 at Stage - Load Monthly Statistics CSV: The connection string format is not valid. It must consist of one or more components of the form X=Y, separated by semicolons. This error occurs when a connection string with zero components is set on database connection manager.
SSIS package "C:***\Stage - Load Monthly Statistics CSV.dtsx" finished: Success.
There are 5 connection strings in the project, 2 OLEDB ones to my SQLServer 2014 databases, 1 ADO.NET one to SQLServer 2014 and 2 FlatFile connections to import .CSV files. The SQL Server ones are currently setup to use Windows auth (while I am troubleshooting) - but in production will use a SQL user and the password is a project parameter,
I have deleted and re-created each of the connections once already with no luck. When the steps are enabled - the job completes all the steps (stages the csv data into SQL) successfully, but ends with an error because of these connection string errors. I can't even tell which connection string is the problem.
I have solved the issue when I just run the task so the variable gets a value, can use a sequence container.
The error means that the variable has no value.
GL

SQL Server Agent Job intermittently running for packages on SSISDB

I created an SSIS package to pull data from OLAP Cube and push it into SQL Server using SSIS 2012. I deployed the same on the SQL Server SSIS DB and created a SQL Server Agent Job to run the package. I have an account configured to run the job (not by creating proxy in the job, but SQL Server Agent is running under that account), that has access to the OLAP Cube. The job is running sometimes and failing sometimes.
Why the job behaving weirdly? Any help on the issue will help me a lot.
I am using SQL Server 2012 SP1 enterprise edition (11.0.3000.0) (if it helps). The error message which pops up when it fails is :
OLE DB Source failed the pre-execute phase and returned error code 0xC0202009
SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E05.
An OLE DB record is available. Source: ""Microsoft OLE DB Provider for SQL Server 2012 Analysis Services."" Hresult: 0x00000001 Description: ""Error Code = 0x80040E05, External Code = 0x00000000:."".
"
I have had the same error on SQL2008 and now on SQL2012 SSIS, but have been able to eliminate / workaround.
We have a Loop Container in our Control flow that contains a data-flow task with an MDX source. The MDX query for the data-flow source is dynamically built (via an expression) on each iteration of the Loop container (however it always returns the "same shaped" results - only the filters in the WHERE clause are different).
We've found the error to be somewhat intermittent - sometimes the package will complete successfully, other times it will fail with the 0x80040E05 error at varying iterations thru the container loop.
To alleviate the problem we setup the SQL Agent job-step for this package to re-try on failure for up to 5 retries - not an ideal workaround, but it helped to improve the success rate of the Job.
We have no idea why this error is occurring or what is causing it, however it appears to be timing-related in some way and I have only seen the issue when using a SSAS OLE-DB data source with a dynamically generated MDX query. I have managed to virtually eliminate the error from occurring with a not ideal workaround in the SSIS package - no idea why this works/helps (hopefully Microsoft will be able to work it out and resolve the issue as it's been plaguing us since SQL2008 and is still here in SQL2012 SP1...
Workaround for MDX causing 0x80040E05 error:
Within our loop container we have added a Script task with OnSuccess precedent constraint to the data-flow task that contains the dynamically generated MDX source query. The script task simply introduces a WAIT in the processing immediately after the data-flow task completes of about 5 seconds, before allowing SSIS to continue with the next iteration (e.g. System.Threading.Thread.Sleep(5000)).
With this delay in place we have had much more stable SSIS package executions - dont know why, but that's what we have observed. Also note that when we migrated to SQL2012 SSIS packages the 0x80040E05 error returned, however we were able to eliminate it once more by increasing the WAIT time to 10 seconds on this script task.
Now waiting for 10 seconds is not an ideal solution / workaround to this problem - particularly when it is contained within a Loop Container (in our case it has added nearly 30 minutes of "WAIT time" to the package execution duration), however this workaround is better than having the package fail 80%+ of the time

SSIS: transaction during simultaneous moving of data

I implemented SSIS package which moves data from Sql Server database to another one. This package has set of Data Flow Tasks which copy data simultaneously in different tables. Each Data Flow Task contain OLE DB datasource and Sql Server destination.
Package worked fine until I decided to implement transaction. I found that it is not possible to just set TransactionOption to Supported on package level, because SSIS cannot handle transactions in multiple simultaneous processes. So, I decided to use this way:
http://consultingblogs.emc.com/jamiethomson/archive/2005/08/20/SSIS-Nugget_3A00_-RetainSameConnection-property-of-the-OLE-DB-Connection-Manager.aspx
But now I have another problem. I have "Unable to bulk copy data. You may need to run this package as an administrator" errors. These errors occur in random places. For example if I ran package in the first time Data Flow Task named "Task A" can be executed correctly, but when I run package in the second time it can throw the error.
How do I can implement transaction in my case? (Changing of package in order to perform execution of Data Flow tasks sequentially is not an option)
I got a recent error with our MS SQL Server 2008R2 and SSIS. Found the error:
[SQL Server Destination [16]] Error: Unable to bulk copy data. You may need to run this package as an administrator.
[SSIS.Pipeline] Error: component "SQL Server Destination" (16) failed the pre-execute phase and returned error code 0xC0202071.
but could not solve it with running as Admin. The error only came with one step and I finally found out that I get rid of the error when I increased the timeout of the SQL Server Destination. Funny is that with the read of external ADO NET Source I get a proper error that helped me to see the timeout is the problem.

Resources