A fix is available
APAR status
Closed as program error.
Error description
The symptom of the problem is an application leaks memory when fetching columns with variable length data types like VARCHAR, for example. The cause of the problem is DB2's OLE DB Provider is not returning an error when the application asks for memory to be managed by DB2's OLE DB Provider. DB2's OLE DB Provider does not support that and assumes the memory will be managed (freed) by the application. An example error that can occur is: Server: Msg 7346, Level 16, State 2, Line 2 Could not get the data of the row from the OLE DB provider 'IBMDADB2'. The provider cannot allocate memory or open another storage object on this column. OLE DB error trace [OLE/DB Provider 'IBMDADB2' IRowset::GetData returned 0x80040e21: Data status returned from the provider: [COLUMN_NAME=VIN STATUS=DBSTATUS_E_CANTCREATE]]. This is an OLE DB non-conformance problem. DB2's OLE DB provider does not support a binding that asks for memory to be provider owned. For example, a binding created with DBBINDING.dwMemOwner with a value of DBMEMOWNER_PROVIDEROWNED. IAccessor::CreateAccessor() should return DBBINDSTATUS_BADBINDINFO on the binding that asks for DBMEMOWNER_PROVIDEROWNED.
Local fix
If using MS SQL Server Linked server, do not select the option for "Allow In Process" for the provider.
Problem summary
The symptom of the problem is an application leaks memory when fetching columns with variable length data types like VARCHAR, for example. The cause of the problem is DB2's OLE DB Provider is not returning an error when the application asks for memory to be managed by DB2's OLE DB Provider. DB2's OLE DB Provider does not support that and assumes the memory will be managed (freed) by the application. An example error that can occur is: Server: Msg 7346, Level 16, State 2, Line 2 Could not get the data of the row from the OLE DB provider 'IBMDADB2'. The provider cannot allocate memory or open another storage object on this column. OLE DB error trace [OLE/DB Provider 'IBMDADB2' IRowset::GetData returned 0x80040e21: Data status returned from the provider: [COLUMN_NAME=VIN STATUS=DBSTATUS_E_CANTCREATE]]. This is an OLE DB non-conformance problem. DB2's OLE DB provider does not support a binding that asks for memory to be provider owned. For example, a binding created with DBBINDING.dwMemOwner with a value of DBMEMOWNER_PROVIDEROWNED. IAccessor::CreateAccessor() should return DBBINDSTATUS_BADBINDINFO on the binding that asks for DBMEMOWNER_PROVIDEROWNED.
Problem conclusion
First fixed in DB2 UDB Version 8, FixPak 16
Temporary fix
If using MS SQL Server Linked server, do not select the option for "Allow In Process" for the provider.
Comments
APAR Information
APAR number
IY93670
Reported component name
DB2 CEE AIX
Reported component ID
5765F3000
Reported release
810
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2007-01-16
Closed date
2008-02-06
Last modified date
2008-02-06
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
IY93677
Fix information
Fixed component name
DB2 CEE AIX
Fixed component ID
5765F3000
Applicable component levels
R810 PSN
UP
R820 PSN
UP
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"810","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]
Document Information
Modified date:
06 February 2008