This test is unnecessarily strict. It reduces performance to close the socket and open a new one; it would be better to reuse the open connection. To accomplish this, the session could be flagged as "requires a database change".
If this flag is set, then when resetting the connection, use a COM_CHANGE_USER packet to specify the same DB as in the original connection string. Or, if ConnectionReset=false, do nothing and leave the state of the connection as-is (considering the selected DB to be part of the session state). The database should be set back to the one in the connection string, even if ConnectionReset=false; this is the expected outcome from opening a connection and is the behaviour of Connector/NET.
The text was updated successfully, but these errors were encountered:
If connections are being created and returned to the pool very frequently, then closing the socket can cause the client to run out of local ports and prevent future connections: #533. This would be quite unexpected when pooling is enabled, as the user would assume that a small number of physical connections are being reused.