Использовать отключенный набор записей
Const adOpenStatic = 3
Const adUseClient = 3
Const adLockOptimistic = 3
Dim conn: Set conn = Server.CreateObject("ADODB.Connection")
conn.Open sYourConnectionString
Dim rs : Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = adUseClient
rs.Open sYourSQL, conn, adOpenStatic, adLockOptimistic
Set rs.ActiveConnection = Nothing
conn.close
'' // You can now roam around the recordset with .MoveFirst, .MoveNext etc without
'' // incurring any further hits on the DB.
Обратите внимание, что если у вас есть параметры для предоставления в sql, вам нужно будет использовать объект ADODB.Command
между соединением и набором записей (не поддавайтесь искушению использовать конкатенацию строк). Тем не менее, принцип тот же: используйте расположение курсора клиента и статический набор записей, затем отсоедините и закройте соединение.