我有一个在 SSIS 数据流中间执行转换的脚本任务。如果脚本失败(比如它尝试将 alpha 转换为数字),我需要它以“失败”状态停止并返回主包,然后利用数据流任务事件处理程序 OnError 正常退出。
目前我发现数据流中的脚本任务返回一个 .net 错误弹出窗口,然后我必须清除它。我已经尝试了围绕代码的 Try Catch,它似乎停止了调试窗口的出现,但我似乎无法让它以“失败状态”退出脚本,这将导致包失败。 Dts.TaskResult = Dts.Results.Failure 在数据流任务中似乎无效。目前我正在尝试这个:
Catch e As System.Exception
Me.ComponentMetaData.FireError(-1, "", "Error: ", e.Message, 1, True)
While Not e.InnerException Is Nothing
e = e.InnerException
Me.ComponentMetaData.FireError(-1, "", "InnerException: ", e.Message, 1, True)
End While
Exit Sub
End Try
...但这只是跳过坏行。数据流继续。问题是让它以“失败”退出,因此会触发包中的 onError 错误处理程序事件。
任何建议都非常感谢。
格伦
最佳答案
脚本转换没有返回成功或失败的相同功能。您可以使用以下代码强制错误:
If Row.TestColumn = "Value I Want To Error On" Then
Error (1)
End If
基本上,Error 对象(函数?方法?随便!)将允许您模拟错误。意思是,您可以使用此代码使包出错。
关于SSIS 数据流脚本任务错误处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1490454/