2010-06-24 43 views
0

我每小時運行一個計劃的SSIS包,隨機得到一個錯誤。最有趣的是,如果我刪除檢查點文件並再次運行包,它可以正常工作,但在將來運行時可能會顯示錯誤。我不知道爲什麼會發生這種情況。這是完整的錯誤信息。「無法鎖定變量」SSIS錯誤

Executed as user: UserNameChanged. Microsoft (R) SQL Server Execute Package Utility Version 10.0.2531.0 for 64-bit Copyright (C) Microsoft Corp 1984-2005. All rights reserved.
Started: 09:21:40 Error: 2010-06-24 09:21:45.83 Code: 0xC0014054
Source: Save MaxLSN & Extract Date
Description: Failed to lock variable "User::UpdateProcessControlQuery" for read access with error 0xC0010001 "The variable cannot be found. This occurs when an attempt is made to retrieve a variable from the Variables collection on a container during execution of the package, and the variable is not there. The variable name may have changed or the variable is not being created.". End Error Error: 2010-06-24 09:21:45.84 Code: 0xC0024107 Source: Save MaxLSN & Extract Date Description: There were errors during task validation. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 09:21:40 Finished: 09:21:45 Elapsed: 4.875 seconds. The package execution failed. The step failed.

要添加到這一點,我有超過100箇中的一組中的20包和5組在一個小時組運行有這樣的包裝。而這個'可變鎖'錯誤在每個週期至少會彈出一次。所以我需要找出根本原因。任何人都可以幫助...

回答

3

我懷疑,這是關係到並行執行多個組件寫入同一個變量之中。基本上這將是該變量的競爭條件。

例如,如果組件A和組件B可以並行執行,並且都寫入給定變量,那麼當組件B嘗試執行時,組件A可能會寫入(使其不可用)。由於這兩個作業的開始時間會因運行而異,因此您可以獲得軟件包隨機失敗的情況。

要解決此問題,您需要添加其他變量以使它們不共享,或者強制一個組件在另一個組件完成之前(通過依賴關係)完成。

希望這會有所幫助。

0

似乎有一個變量是缺少的序列容器在包中可能需要從其他作業或父包得到。我認爲它是運行時變量範圍或變量值生成的問題。

感謝 prav

+0

沒有。如果是這種情況,爲什麼在刪除檢查點文件後程序包運行? – Faiz 2010-06-25 12:14:34

0

檢查並確保任務編輯器中的連接管理器屬性。如果您從其他軟件包複製任務/連接管理器,那麼我們必須確保所有屬性都已正確重新定義。

0

我有同樣的問題。修復哪些爲我工作:

根本原因:我已經創建了變量,並在「數據流」內使用它來保存「行計數」的值。在此之後,我試圖在「控制流」>「腳本任務」中使用此變量。它沒有工作,並給我發佈相同的錯誤。

修復:我創建了變量並在「腳本任務」中使用。在腳本任務中使用後,我在數據流>行計數中分配了行計數的值。

它看起來很奇怪,但它工作:)

相關問題