2014-10-07 181 views
2

在執行的SSIS包,我收到以下錯誤:"The transaction operation cannot be performed because there are pending requests working on this transaction."SSIS錯誤,交易操作

SSIS包有4個執行運行並行SQL任務。 連接是ADO.Net。

執行sql任務調用具有事務,回滾和提交的過程, 執行1或2執行sql任務失敗並保持成功。

此外,在任何sql任務失敗時,其他執行sql任務的數據也會回滾。

我希望這些執行sql任務彼此獨立運行。數據應僅回滾用於具有並行運行的任務的所有記錄的任務。

+0

這聽起來像是你的SQL語句正在發生衝突。該軟件包設置了什麼隔離級別? – 2014-10-07 12:45:20

+0

隔離級別是可序列化的,並且支持事務選項 – Kapil 2014-10-07 14:14:46

回答

2

您可能會遇到需要被終止的死鎖。您可以通過進入SQL Server Management Studio並運行看到以下內容:

SELECT * FROM SYSPROCESSES where blocked > 0 

然後,如果它是安全的話,它的ID例如殺死進程

殺死99

如果是夜間ETL過程的一部分,你可能要考慮在SQL代理創建4個不同的工作步驟,並在晚上在不同的時間執行它們。這可能會解決您遇到的問題。

否則,如果執行SQL任務需要在同一個包中運行,則需要檢查它們的運行順序。首先運行sql任務,然後轉到下一個 - 例如將一個序列容器添加到控制流中,以確保第一個執行sql任務在下一次運行之前完成。