We just ran into and issue where our connection pool was being flooded by SqlDataReaders but when we ran our load testing on our staging environment we could not recreate the issue.
The only thing I can think of is that there are differences in how connection pooling is handled on 2008 r2 and 2003.
Once we passed in a command behavior of
CommandBehavior.CloseConnection to the
ExecuteReader method we were able to stop our connection pool from flooding.
Our production server was temporarily running on a 2003 server to work with some dependencies on the 1.1 framework, but we'd removed those dependencies and in doing so we essentially rewrote our DAL and after noticing this
CommandBehavior difference between our new DAL and the old DAL we insert it into our new DAL and things worked fine again.
We plan to move back to the 2008 server for our production environment, it just that we some short time constraints to deal with.
In the meantime I need to explain why we didn't catch this issue in our load tests before the change went live on our production environment. Which is why I'm asking this question here as I haven't had any luck locating an answer while I've been googling.
Another item that might make a difference is that the 2003 server is a 32-bit box and the 200 r2 server is, obviously, a 64-bit box.