C# を使用して SSIS で SQLCommand をルックアップ タスクにプログラムで設定しようとすると、回避策が見つかりました。
元の問題: 設計時にルックアップ タスクを介して直接
CManagedComponentWrapper designTime = lookupTask.Instantiate();
designTime.ProvideComponentProperties();
designTime.SetComponentProperty("SqlCommand", lookupQuery);
designTime.SetComponentProperty("SqlCommandParam", lookupQuery);
新しい問題: ルックアップ変換タスクをホストするデータ フロー タスクを通じて:
satelliteDft.SetExpression("[MyLookup].[SqlCommand]", lookupQuery);
satelliteDft.SetExpression("[MyLookup].[SqlCommandParam]", lookupQuery);
問題は、データ フロー タスクを実行しているときでも、新しく作成したパッケージを開いたときに、select ステートメントがルックアップ タスクに表示されないことです。
編集:
以下のソリューションは、データ フロー プロパティが実際に変更された場合でも、ルックアップ タスクの実際の値を変更しません。データ フロー タスクで変更できるプロパティは次のとおりです。
[MyLookup].[SqlCommand]
[MyLookup].[SqlCommandParam]
AutoGenerateIDForNewObjects
BLOBTempStoragePath
BufferManager
BufferTempStoragePath
ComponentMetaDataCollection
CreationName
DefaultBufferMaxRows
DefaultBufferSize
DelayValidation
Description
Disable
DisableEventHandlers
EngineThreads
EventHandlers
EventInfos
Events
ExecutionDuration
ExecutionResult
ExecutionStatus
FailPackageOnFailure
FailParentOnFailure
ForcedExecutionValue
ForceExecutionResult
ForceExecutionValue
ID
IsDefaultLocaleID
IsolationLevel
LocaleID
LogEntryInfos
LoggingMode
LoggingOptions
MaximumErrorCount
Name
Parent
PathCollection
RunInOptimizedMode
StartTime
StopTime
TransactionOption
VariableDispenser
Variables
これらのいずれかを使用して Expression の値を設定できるようにするという考えだと思います。