SSIS 2005を使用して特定の変数が変更された際に、変更後の値で処理をしようとしています。
イベントハンドラ"OnVariableValueChanged"を作成し、スクリプトタスクを配置し、
スクリプト内で変数を参照しようとしましたが、以下のエラーが発生しました。
---
エラー: 0xC001405B (スクリプト タスク: 読み取りアクセス用の変数 "User::MsgID" をロックしようとしたときに、
デッドロックが検出されました。16 回試行しましたがロックを取得できなかったため、ロックはタイムアウトしました。
---
スクリプトプロパティのReadOnlyVariablesに上記の変数名を設定し、
対象となる変数のプロパティ、RaiseChangedEventをtrueに設定してあります。
スクリプトは以下の通りです。
(FireInformationはデバッグのために使用しています。)
---
Public Sub Main()
Dts.Events.FireInformation(0, "", "XXX " + CStr(Dts.Variables("MsgID").Value) + " XXX", "", 0, True)
Dts.TaskResult = Dts.Results.Success
End Sub
---
ちなみに、色々なサイトをみて、VariableDispenserを使用する方法も試してみましたが、
同じエラーになりました。
---
Public Sub Main()
Dim var As Variable
Dim vars As Variables
Dts.VariableDispenser.LockOneForRead("User::MsgID", vars)
Dts.Events.FireInformation(0, "", "XXX " + CStr(vars.Count) + " XXX", "", 0, True)
Dts.TaskResult = Dts.Results.Success
End Sub
---
以上、何が問題なのか分かりますでしょうか。
もしくは、イベントハンドラ内のスクリプトタスクで変数は参照出来ないのでしょうか。
よろしくお願いします。