c#-SSIS脚本组件作为源抛出System.NullReferenceException
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-SSIS脚本组件作为源抛出System.NullReferenceException,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1748字,纯文字阅读大概需要3分钟。
内容图文
![c#-SSIS脚本组件作为源抛出System.NullReferenceException](/upload/InfoBanner/zyjiaocheng/677/cad476044038416e8aa3883be6c3feeb.jpg)
我有一个DataFlow,其中有一个脚本组件作为源.
我已经根据需要定义了Output(OutputRows)和Column(MyOutputValue).
当我想测试我的脚本时,即使使用硬编码值,也总是会遇到相同的错误:
System.NullReferenceException:对象引用未设置为对象的实例.在ScriptMain.CreateNewOutputRows()中.
我不知道这里出了什么问题.任何想法?
这是我的代码:
using System;
using System.Data;
using System.Windows.Forms;
using System.Threading;
using System.Globalization;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using Microsoft.SqlServer.Dts.Runtime;
using Excel = Microsoft.Office.Interop.Excel;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
#region Members
String MyOutputValue;
#endregion
public override void PreExecute()
{
base.PreExecute();
MyOutputValue = "test";
CreateNewOutputRows();
}
public override void PostExecute()
{
base.PostExecute();
}
public override void CreateNewOutputRows()
{
OutputRowsBuffer.AddRow();
OutputRowsBuffer.MyOutputValue = MyOutputValue;
}
}
在我的SSIS程序包中,我开始调试,然后得到以下屏幕(它是德语,因此针对该帖子,我将错误翻译为英语):
解决方法:
在PreExecute方法返回之前,SSIS运行时不会初始化输出缓冲区(例如OutputRowsBuffer对象).
不幸的是,您的PreExecute方法直接调用CreateNewOutputRows,这将导致NullReferenceException.相反,您应该让SSIS运行时调用CreateNewOutputRows(它将在执行周期的适当时间调用它):
public override void PreExecute()
{
base.PreExecute();
MyOutputValue = "test";
// Do NOT call CreateNewOutputRows from PreExecute!
// CreateNewOutputRows();
}
public override void CreateNewOutputRows()
{
OutputRowsBuffer.AddRow();
OutputRowsBuffer.MyOutputValue = MyOutputValue;
}
有关其他示例代码,请参见MSDN上的Creating a Source with the Script Component页.
内容总结
以上是互联网集市为您收集整理的c#-SSIS脚本组件作为源抛出System.NullReferenceException全部内容,希望文章能够帮你解决c#-SSIS脚本组件作为源抛出System.NullReferenceException所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。