我正在编写一个程序,从一个数据库中读取数据,以便在另一个数据库中插入/更新。部署时,源数据库将是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)
但是当我查看正在检索的数据时,该列不是null并且看起来完全正常。我能在网上找到的唯一类似情况与SSIS有关,我不认为他们的工作会适用。
有没有人有任何想法?
答案 0 :(得分:0)
我没有找到这个问题的答案,但能够解决它。
减少一次处理的数据量似乎可以避免触发错误。对于我转移的大多数表格,我一次可以做20,000行。其中两个表必须处理10,000个行块。它真正遇到麻烦的一个表必须以1000行的块进行处理。