DB_E_OBJECTOPEN when calling DB2 after .NET Framework 1.1 SP1

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

We recently installed .NET Framework 1.1 Service Pack 1 (SP1) (KB867460) on a
Windows 2003 Server Standard Edition. This server hosts an ASP.NET Web site
that talks to an IBM DB2 8.1 database using the System.Data.OleDb classes.

After installing the service pack, we began receiving
System.Data.OleDb.OleDbException exceptions for certain types of queries.
After we rolled back the service pack, the exceptions disappeared.

With the service pack applied, the exceptions are consistent. That is,
certain queries will always throw the exception, but other queries will never
throw the exception. The error message is as follows:

No error information available: DB_E_OBJECTOPEN(0x80040E05).

The relevant portion of the stack trace:

at System.Data.OleDb.OleDbDataReader.ProcessResults(Int32 hr)
at System.Data.OleDb.OleDbDataReader.NextResult()
at System.Data.Common.DbDataAdapter.FillNextResult(IDataReader dataReader)
at System.Data.Common.DbDataAdapter.FillFromReader(Object data, String
srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords,
DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable,
IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32
startRecord, Int32 maxRecords, String srcTable, IDbCommand command,
CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord,
Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior
behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)

In case it's of use, here is some detailed information about the DB2 client
software version:

C:\Program Files\IBM\SQLLIB\BIN>db2level
DB21085I Instance "DB2" uses "32" bits and DB2 code release "SQL08015" with
level identifier "02060106".
Informational tokens are "DB2 v8.1.5.449", "s040212", "WR21334", and FixPak
"5".
Product is installed at "C:\PROGRA~1\IBM\SQLLIB".

We would really like to apply SP1 for the enhanced security, but at this
point we're not sure how to make our application work with the service pack
in place. Any suggestions would be appreciated.
 
It may not be relevant, but it appears that the call that fails uses an
OleDbDataAdapter, while the call that succeeds only uses an OleDbDataReader.
 
I found a thread on Google groups that had the answer:

http://groups-beta.google.com/group...q=DB_E_OBJECTOPEN+DB2&rnum=2#8f806619d626bece

We installed UDB 8.2 FixPak 7a on the client machine (the Web server), which
solved the problem. The steps we went through included rolling back .NET
Framework 1.1 SP 1, which eliminated the problem. We reinstalled .NET
Framework 1.1 SP 1, which caused the problem again. Finally, we installed
DB2 8.2 FixPak 7a, which eliminated the problem again.

The moral of the story appears to be that if you're using an
OleDbDataAdapter to talk to a DB2 database, you should apply both .NET
Framework 1.1 SP1 and DB2 8.2 FixPak 7a at the same time to avoid
DB_E_OBJECTOPEN errors.
 
Back
Top