0

我正在编写一个程序,该程序从一个数据库中读取数据以插入/更新到另一个数据库中。部署时源数据库将是 DB2,但目前我正在使用 SQL Server 2008 R2 副本进行开发。

我正在使用 SQL Server 的 ODBC 驱动程序 11 来读取数据并且遇到异常异常。

我的代码是:

public static string ReadShortODBCColumn(OdbcDataReader reader, string columnName) 
{    
    int column = reader.GetOrdinal(columnName);
    return reader.IsDBNull(column) ? (short)0 : reader.GetInt16(column);
}

正在输出的异常是:

2013-02-06 13:09:16.7834  System.Data.Odbc.OdbcException (0x80131937)
at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
at System.Data.Odbc.OdbcDataReader.GetData(Int32 i, SQL_C sqlctype, Int32 cb, Int32& cbLengthOrIndicator)
at System.Data.Odbc.OdbcDataReader.GetData(Int32 i, SQL_C sqlctype)
at System.Data.Odbc.OdbcDataReader.internalGetInt16(Int32 i)
at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i, TypeMap typemap)
at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i)
at System.Data.Odbc.OdbcDataReader.IsDBNull(Int32 i)
at ProcessEngine.Business.Utilities.ReadShortODBCColumn(OdbcDataReader reader, String columnName)

但是当我查看正在检索的数据时,该列不为空并且看起来完全正常。我能够在网上找到的唯一类似情况与 SSIS 有关,我认为他们的解决方法不适用。

有没有人有任何想法?

4

1 回答 1

0

我没有找到这个问题的答案,但能够解决它。

减少一次处理的数据量似乎可以避免触发错误。对于我要转移的大多数表,我一次可以做 20,000 行。其中两个表必须以 10,000 个行块进行处理。它确实遇到问题的一张表必须以 1000 行块的形式进行处理。

于 2013-03-04T04:52:58.070 回答