在哪里可以找到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;
    }

在哪里可以找到SSIS脚本任务PreExecute方法

ScriptTask没有PreExecute方法。在循环的每次迭代中,您都必须完成所有的实例化和绑定工作。它类似于脚本组件示例中发生的情况,因为设置只进行一次,然后所有行都输出。如果你在循环你的数据流,它必须重做预执行方法每个循环。

根据文章末尾的注释,听起来代码控制了配置,不需要修改app.config。WCF的东西不是我的强项,所以我不能评论。