we have a client side application, on Windows and Oracle 10g R2.
We use OLEDB templates from MFC (CDynamicParameterAccessor).
There is a long query (4610 char) what provider return E_UNEXPECTED HRESULT (from execute, before the bind).
No detailed info from provider (GetErrorRecords() return E_FAIL).
If I copy this query into SQL* Plus, it run without error.
There is an almost the same query run successfull, the difference is only in two added order by and alias column.
recordset properties was:
stPropSet.AddProperty(DBPROP_IRowsetScroll, true); // IsEmpty uses this interface
connection string is:
"Provider=OraOLEDB.Oracle;User ID=user;Password=pw;Data Source=foto1;ChunkSize=4000"
What can I do for found the problem?
Now, I am found the reason...
ROW-00001: Can not allocate memory. (11g client can give some information before crash...)
One of our recordset swallow up almost all the memory and the next recordset open failed.
It is a narrow recordset (narrowed because of Oracle), only 3 navigator column in it, but the row count is hight.
We can not narrow it any more.
Can we set the client, to can receive this recordset without crash?
Even if it need 11g client?
Without knowing whether you're out of memory due to some sort of leak or not it's hard to make a good suggestion. I'd certainly recommend trying the latest 11203 oledb provider/client to rule out any sort of known issue provider leak/malfunction.
Short of that, if you're really just trying to stuff too much into memory, you might look into the lowering the fetchsize or changing the CacheType setting..
Hope it helps,