SSIS脚本组件关闭阅读器

时间:2014-10-14 16:01:14

标签: c# ssis script-component

我的SSIS脚本组件出现问题。在我的CreateNewOutputRows方法获得它之前,我的Reader似乎已经关闭了。有人能帮助我吗?

OdbcConnection odbcConn;
OdbcCommand odbcCmd;
OdbcDataReader odbcReader;

public override void PreExecute()
{
    base.PreExecute();
    using (odbcConn = new OdbcConnection(this.Connections.InformixODBC.ConnectionString))
    {
        odbcConn.Open();
        string cmdText = Variables.INFORMIXQUERY;
        cmdText = cmdText.Replace("{{START_DATETIME}}", "'" + Variables.STARTDATETIME + "'");
        cmdText = cmdText.Replace("{{END_DATETIME}}", "'" + Variables.ENDDATETIME + "'");

        odbcCmd = new OdbcCommand(cmdText, odbcConn);
        odbcReader = odbcCmd.ExecuteReader();
    }
}

这就是我目前设置的阅读器的方式。我走了进去,它似乎退出PreExecute方法并进入CreateNewOutputRows方法,但我无法进行任何AddRow调用,因为阅读器已关闭。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

阅读器是通过您的连接进行连接的。一旦使用声明超出范围,连接就会被处理掉,而您的读者现在已经与源断开连接。

相反,您需要将结果加载到PreExecute中的DataSet / DataTable中,然后在您准备好时枚举结果。

将PreExecute逻辑推送到CreateNewOutputRows方法。

MSDN使用ResultSet和填充数据集的链接