在尝试使用 C# 以编程方式将 SQLCommand 设置为 SSIS 中的查找任务时,我找到了一种解决方法。
原始问题:直接通过设计时的查找任务
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
我认为这个想法是能够使用其中之一来设置表达式的值。