【问题标题】:SSIS Script Component Closing ReaderSSIS 脚本组件关闭阅读器
【发布时间】:2014-10-14 16:01:13
【问题描述】:

我的 SSIS 脚本组件有问题。似乎我的 Reader 在我的 CreateNewOutputRows 方法得到它之前就关闭了。有谁能帮帮我吗?

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 调用。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: c# ssis script-component


    【解决方案1】:

    Reader 是通过您的 Connection 连接的。一旦 using 语句超出范围,连接就会被处理掉,瞧,您的阅读器现在与源断开连接。

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

    或者将您的 PreExecute 逻辑推送到 CreateNewOutputRows 方法中。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      相关资源
      最近更新 更多