|
|
|
ADO recordset ест пямять
|
|||
|---|---|---|---|
|
#18+
Есть метод который открывает некое подключение к таблице в БД через ADO.RECORDSET. По замыслу окрытый набор записей (если в нём существует хоть одна запись) возвращается. Если записей нет, то закрывается и возвращантся nothing. Понятно что при открытии набоа записей выделяется память (у меня примерно мега 1,5). Но почему при закрытии объекта ADO.Recordset она не освобождается? Метод close разве не освобождает ресурсы? Функция вызывается в цикле и через пару проходов память заканчивается (при том что известно, что записей нет). Функция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 12:51 |
|
||
|
ADO recordset ест пямять
|
|||
|---|---|---|---|
|
#18+
зачем вот это Код: plaintext и вот это Код: plaintext попробуй так после передачи рекордсета Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 13:04 |
|
||
|
ADO recordset ест пямять
|
|||
|---|---|---|---|
|
#18+
Интересная проблемка. Покажите весь код - интересно оценить откуда закус памяти. И, есть предположение, что Dim rst as New ADODB.Recordset - плохая конструкция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 13:09 |
|
||
|
ADO recordset ест пямять
|
|||
|---|---|---|---|
|
#18+
command и goto - это от старого кода. Можно считать что их нет (в процедуре их действительно нет). Попробовал set...=nothing. Всё равно не освобождает. Даже если закрыть rvConn, всё равно память остаётся забитой. Как выделяется на строчке [src vba] rst.Open sql, rvConn, adOpenKeyset, adLockOptimistic [\src] так и не освобождается больше... Может кэш какой есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 13:19 |
|
||
|
ADO recordset ест пямять
|
|||
|---|---|---|---|
|
#18+
В общем дело не в раннем и позднем связывании... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 13:20 |
|
||
|
ADO recordset ест пямять
|
|||
|---|---|---|---|
|
#18+
big-dukeкакой cusrorlocation у recordset и connection ? БД MSSQL ? И у connection и у recordset = 2 (server я так понимаю) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 14:18 |
|
||
|
ADO recordset ест пямять
|
|||
|---|---|---|---|
|
#18+
База - excel через rvConn.Provider = "MSDASQL" rvConn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & path & ";ReadOnly=False;" rvConn.Open А что cursorlocation как-то влияет на память? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 14:23 |
|
||
|
ADO recordset ест пямять
|
|||
|---|---|---|---|
|
#18+
Для хранения своих данных все курсоры используют временные ресурсы - память, файл подкачки, временные файлы. Курсоры на клиентской стороне требуют выделения ресурсов на клиетсокй машине, а курсор на серверной стороне - на сервере. Еще. Чем обусловлен такой выбор : adOpenKeyset, adLockOptimistic ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 14:28 |
|
||
|
ADO recordset ест пямять
|
|||
|---|---|---|---|
|
#18+
http://support.microsoft.com/kb/319998 - MS как всегда... Чтобы пользоваться данными надо закрывать книгу. Вопрос закрыт. Спасибо всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2007, 14:35 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=34660891&tid=2163725]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 498ms |

| 0 / 0 |
