あるデータベースからデータを読み取り、別のデータベースに挿入/更新するプログラムを作成しています。ソース データベースはデプロイ時に 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に関連しており、彼らの回避策は適用されないと思います。
誰にもアイデアはありますか?