We're getting a rather strange effect for which I'd be grateful for
some help.
Our server app does lookups and updates against a database (SQL Server
or Oracle). Talks via ADO, and runs under COM+. This server app
runs under COM+ but does transaction control itself via ADO (ie it
does not use COM+ declarative transaction model).
Recently we tried putting the server under some pressure, with 5
automated clients sending in requests as fast as possible. Against
SQL Server this caused no problem. However in running the same test
against Oracle, after about 20-30 mins we started to see a number of
failures. Upon further investigation we discovered something rather
curious:
- The failures occurred when an attempt was made to open an ADO
database connection. An access violation would occur within the
Open() method for no apparent reason.
- From trace output it became clear that once such a failure occurred,
that further failures were likely to occur on that same thread id.
In one test run all failures occurred on a single thread. On another
these failures were consistently noted on two thread ids.
<Speculation>What occurs to me is that this might indicate that an ADO
connection goes 'bad' for some reason, and that once that happens it
is remains pooled by COM+. Whether by design or otherwise it looks
as though that database connection is associated with a particular
thread in COM+'s pool, which is why I keep seeing the same thread ids
coming up as failing.</Speculation> If this is true, is there any
way I can tell COM+ to remove this 'bad' connection from its pool?
Does this seem like a possible explanation?
An obvious approach to dealing with this is to look for another
version of OLEDB provider. However we're currently using the latest
one from Oracle for this particular Oracle client/server pairing.
The search continues, but I'm looking out for alternative approaches
just in case.
If this sounds familiar to anyone by all means tell us how you got
around it.
Environment:
Windows 2000 SP3 (both professional and server).
MDAC 2.71.9030.9
Oracle9i Enterprise Edition Release 9.2.0.3.0
Oracle Provider for OLEDB 9.2.0.2