【发布时间】:2016-02-25 21:16:40
【问题描述】:
我遇到的情况是 ScriptMain 的子类(我的 SSIS 脚本任务的入口点类)需要在 try catch 语句中触发 Dts 事件警告。
我遇到的问题是我无法从我的子类访问 Dts。我的猜测是,这将是一个试图访问祖父母方法的孙子。作为一种解决方案,我继承了我的子类中的Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase 类。但是,这仍然会导致 null Dts 实例。
我正在尝试做的事情可能吗?
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void Main()
{
ChildClass hi = new ChildClass();
hi.Execute();
}
}
public class ChildClass : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void Execute()
{
foreach(var request in createETRequests())
{
try{
//do scary stuff
}
catch
{
//handle error
this.TrackError("oh no!");
}
}
}
private IEnumerable<TriggeredSend> createETRequests()
{
TriggeredSend triggeredSendObject = new TriggeredSend();
//do stuff within another foreach including the below return
yield return triggeredSendObject;
}
private void TrackError(string foo)
{
//NULL EXCEPTION when called from child instance
Dts.Events.FireWarning(2000, "hello there SSIS", foo, String.Empty, 0);
}
}
【问题讨论】:
标签: c# sql-server inheritance ssis dts