1

We have an SSIS package in our SQL Server 2008 server to load data onto our system every night. The SSIS package consists of several ETLs (around 20) that are currently run sequentially.

On some nights it spits out below deadlock messages for certain ETLs. Some nights pass with no errors at all. Every night what's run on the server is the same.

The specific ETLs deadlocking are not the same. For instance,

  • Monday it'll be ETL1, ETL3, ETL9.
  • Tuesday & Wednesday – all OK.
  • Thursday – ETL2, ETL5, ETL6, ETL7.
  • Friday – all OK.

Below is the 19th night's error message in SQL Server Agent:

Executed as user: localhost. Microsoft (R) SQL Server Execute Package Utility Version 10.0.5500.0 for 64-bit Copyright (C) Microsoft Corp 1984-2005. All rights reserved. Started: 04:26:33 Error: 2016-11-19 04:31:00.39 Code: 0xC0202009 Source: DFT_Extract_ETL1 OLE_DST_ETL_Destination [68] Description: 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: "Transaction (Process ID 65) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.". End Error Error: 2016-11-19 04:31:00.61 Code: 0xC0209029 Source: DFT_Extract_ETL1 OLE_DST_ETL_Destination [68] Description: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "input "RC_Rows_Inserted_Output_OLE_DST_ACTIVITY" (81)" failed because error code 0xC020907B occurred, and the error row disposition on "input "RC_Rows_Inserted_Output_OLE_DST_ACTIVITY" (81)" 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. End Error Error: 2016-11-19 04:31:00.84 Code: 0xC0047022 Source: DFT_Extract_ETL1 SSIS.Pipeline Description: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "OLE_DST_ETL_Destination" (68) failed with error code 0xC0209029 while processing input "RC_Rows_Inserted_Output_OLE_DST_ACTIVITY" (81). 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. End Error Error: 2016-11-19 04:31:01.11 Code: 0xC02020C4 Source: DFT_Extract_ETL1 OLE_SRC_ETL1[1] Description: The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020. End Error Error: 2016-11-19 04:31:01.31 Code: 0xC0047038 Source: DFT_Extract_ETL1 SSIS.Pipeline Description: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on component "OLE_SRC_ETL1" (1) 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. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 04:26:33 Finished: 04:41:09 Elapsed: 875.54 seconds. The package execution failed. The step failed.

1
  • What are all the settings on the OLEDB destination that throws the error? (Table lock? Bulk load? etc)What other processes could be writing into the table and what would happen if they were locked out for the duration of this package execution? Commented Nov 24, 2016 at 14:31

1 Answer 1

1

I encountered the same issue.

I was using a data flow task component in which there is a condition split with many outputs.

The problem was that more than one of these outputs was calling the same stored procedure(As the stored procedure was performing a lock on a specific db resource, I found myself with a parallel use of a same resource which is locked by the same procedure => The result is a Deadlock).

The solution for my case was to duplicate the data flow task and to make sure that in each of them and for the conditionnal split inside, I use only a part of the outputs so that there are no outputs which are calling the same stored procedure.

The number of data flow task component will be related to the coverage of all the outputs of my conditional split.

Hope this help.

1
  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center. Commented Jan 17, 2023 at 18:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.