' If the connection is already opened If lConnectionIsAlreadyOpened Then ' Get the proper definition as per the current scope If oProcess Is Nothing Then oCommand.Connection = oApp.aConnection(nConnectionString, 2) Else oCommand.Connection = oProcess.aConnection(nConnectionString, 2) End If ' The following two lines are added here so to close and open the connection back. This is to avoid ' the SQLDataReader related objects to bug once in every hundreds of thousands of SQL requests. When ' that happens, this creates a message like "There is already an open DataReader associated with this ' Command which must be closed first." ' Close the connection oCommand.Connection.Close() ' Open the connection oCommand.Connection.Open() ElseThis is where all data requests go. So, I added the big comment followed by Close() and Open(). I tested it on the robot and it performs as fast. Then, I uploaded the new version of the framework on a Web site and the numbers were as fast. So, with that change in mind, we will see how it goes. I assume it should resolve that issue. The way I used it so far demonstrated that 2 to 4 times a year, I was getting a situation at SQL Server level which was not fitting well within that infrastructure.