0
我有一個ScriptMain子類(SSIS腳本任務的入口點類)需要在try catch語句內觸發Dts事件警告。提高腳本主類(SSIS腳本任務)的子類中的DTS事件
我遇到的問題是我無法從我的子類訪問Dts。我的猜測是,這將是一個試圖訪問祖父母方法的孫子。作爲解決方案,我繼承了我的子類中的Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
類。但是,這仍然會導致一個實例。
正在嘗試做什麼?
[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);
}
}
這是否會與從子類中調用父方法相同?幾乎把TrackError放在父級?我嘗試了這一點,並得到同樣的問題。我剛剛設置一個變量時遇到的問題是try catch在for循環中......我會更新我的問題。 – 40Alpha
您是否已經在調試器中逐步瞭解代碼並看到TrackError函數被調用? –
是的,我有多個斷點設置。在所有情況下,'Dts'都是空的。除非該事件在'ScriptMain'內被源自該類的請求觸發。 – 40Alpha