我正在修改的visual studio 2008(实际上称为BIDS)中执行c#脚本(在SSIS内部,一个ETL工具)。我收到错误,但错误消息不允许我跟踪导致错误的行。如何找出导致问题的线路。
我尝试使用,尝试catch并且我的SSIS包运行没有错误。但是,当我删除try catch时,包执行显示错误。无论如何,所有关于SSIS的讨论都不是真的需要。它的错误/异常捕获在这里很重要。
try
{
//my code here
}
catch (Exception e)
{
Console.WriteLine("{0} Exception caught.", e);
}
错误信息如下 -
Error: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at ST_LongCodeNameHere.csproj.ScriptMain.Main()
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
答案 0 :(得分:2)
在Technet上查看“Coding and Debugging the Script Component”页面。
特别是,“调试脚本组件”部分可能会给你一些指示:
脚本组件不支持使用断点。 因此,您无法单步执行代码并检查值 包运行。您可以通过监视脚本组件的执行情况 使用以下方法:
- 使用System.Windows.Forms命名空间中的MessageBox.Show方法中断执行并显示模式消息。 (去掉 完成调试过程后,此代码。)
- 提升信息性消息,警告和错误的事件。 FireInformation,FireWarning和FireError方法显示事件 Visual Studio输出窗口中的说明。但是,中 FireProgress方法,Console.Write方法和Console.WriteLine
方法不会在“输出”窗口中显示任何信息。消息
来自FireProgress事件出现在SSIS的进度选项卡上 设计师。有关更多信息,请参阅在脚本中提升事件
组件。- 将事件或用户定义的消息记录到已启用的日志记录提供程序。有关更多信息,请参阅登录脚本组件。
如果您只想检查脚本组件的输出 配置为源或转换,而不保存数据 到目的地,您可以使用行计数停止数据流 转换并将数据查看器附加到脚本的输出 零件。有关数据查看器的信息,请参阅调试数据 流动。
答案 1 :(得分:1)
选中所有框并尝试运行代码。