显示 SSIS 数据流 OnProgress 事件

问题描述 投票:0回答:1

我有一个 C# windows 窗体 .exe,按下按钮时会加载并执行 SSIS 包。

为了向用户显示进度,它有一个事件处理程序。

    class MyEventListener : DefaultEvents
{
    public Label MyLabel;
    public override void OnProgress(TaskHost taskHost, string progressDescription,
        int percentComplete, int progressCountLow, int progressCountHigh, string subComponent, ref bool fireAgain)
    {
        MyLabel.Text = progressDescription;
        return;
    }
}



   //in the userform button onclick:
   MyEventListener eventListener = new MyEventListener();
   eventListener.MyLabel = label2;
   Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
   Package pkg = app.LoadPackage(pkgLocation, eventListener);
   DTSExecResult pkgResults = pkg.Execute(null, null, eventListener, null, null);

它可以工作,但是有一个问题。仅验证和执行 SQL 脚本任务显示 OnProgress 消息。我还有许多数据流任务,我希望它们也显示默认消息,例如“执行数据流任务 35”或其他内容。最简单的方法是什么?

请注意,我没有在 SSIS 中配置任何有关事件的内容,因此所有这些事件都是由 SSIS 自行触发的。

注2:我希望只有一个我可以勾选的复选框。我真的不想手动创建脚本任务来在每个数据流之后显式调用事件,这太疯狂了。

注3:我对将事件保存在任何地方不感兴趣,只是在表单标签中简要显示它们。

sql-server events ssis
1个回答
0
投票

我找不到 DefaultEvent 类关联的内容,但如果您没有看到信息事件 i.e. 执行数据流任务 35,那么您应该为 OnInformation

实现一个处理程序

正如我经常建议编写自己的 SSIS 包运行程序的人一样,要使其在用户桌面或 Web 界面上运行,您需要在目标计算机上安装 SSIS 程序集。这些程序集是 SQL Server 的许可资产,这意味着您需要标准(每个核心约 8k,最少 4 个)或企业版(每个核心约 22k,最少 4 个)许可证才能符合 Microsoft 的要求。在进行审计时,由于这些库不容易意外安装,因此不合规的行为更有可能成为惩罚性赔偿的拳头

© www.soinside.com 2019 - 2024. All rights reserved.