在哪里可以找到SSIS脚本任务PreExecute方法
本文关键字:脚本 任务 PreExecute 方法 SSIS 在哪里 | 更新日期: 2023-09-27 18:16:50
在SSIS(使用vs2013与最新的SSDT)中,我将SQL结果集返回给包,并使用Foreach ADO枚举器迭代它。在循环中,我想有一个控制流脚本任务调用WCF服务。
我已经阅读并理解了这里找到的教程,但是,正如这里引用的,本教程使用的是数据流脚本组件,所以我不能使用它的PreExecute()方法。
我如何以编程方式覆盖app.config设置以避免教程中所述的问题?
使用WCF客户端,从应用程序配置文件配置WCF客户端的正常方法不能很好地工作。
回答后编辑:
我最终像这样组织我的代码。
public ChannelFactory<IMyService> ChannelFactory;
public IMyService Client;
public void PreExecute()
{
//create the binding
var binding = new BasicHttpBinding
{
Security =
{
Mode = BasicHttpSecurityMode.Message,
Transport = {ClientCredentialType = HttpClientCredentialType.Windows}
}
};
//configure the binding
Uri myUri = new Uri(Dts.Variables["myUri"].Value.ToString());
var endpointAddress = new EndpointAddress(myUri);
ChannelFactory = new ChannelFactory<IMyService>(binding, endpointAddress);
//create the channel
Client = ChannelFactory.CreateChannel();
}
public void PostExecute()
{
//close the channel
IClientChannel channel = (IClientChannel)Client;
channel.Close();
//close the ChannelFactory
ChannelFactory.Close();
}
/// <summary>
/// This method is called when this script task executes in the control flow.
/// Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.
/// To open Help, press F1.
/// </summary>
public void Main()
{
PreExecute();
//TODO: code
PostExecute();
Dts.TaskResult = (int)ScriptResults.Success;
}
ScriptTask没有PreExecute方法。在循环的每次迭代中,您都必须完成所有的实例化和绑定工作。它类似于脚本组件示例中发生的情况,因为设置只进行一次,然后所有行都输出。如果你在循环你的数据流,它必须重做预执行方法每个循环。
根据文章末尾的注释,听起来代码控制了配置,不需要修改app.config。WCF的东西不是我的强项,所以我不能评论。