Господа, подскажите пожалуйста, куда "копать". Вопрос следующй:
Delphi 2010 + MS SQL 2008. На сервере существует процедура, которая возращает набор данных (примерно 650000 записей, время работы 1:12 ). Подключаюсь к серверу через ADO. На форме cxGrid, ADOStoredProc, DataSource (всё привязанно как надо 8) ). На событие формы OnCreate, делаю следующее:
ADOConnection.Close;
ADOStoredProc.Close;
ADOStoredProc.Open;
При возврате на клиент набора данных в полном объёме (примерно 650000 записей), генериться ошибка "Объект был открыт". Если возвращать меньше (например 100000), то всё нормально.
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
20-01-2010 05:30
Для чего мне такой объем выводить в грид. Ну, во-первых - ТЗ, а во вторых - проект для наших продажников и, как я понял, хотят иметь фильтр уже по из полного набора записей
Ну, что сказать на этот, извините, бред?... Уже огребли проблемы с памятью, продолжайте вести список проблем, которые возникнут из-за того, что клиент-сервер заставляют работать в качестве файл-сервера.
Спасибо, уважаемый Noskov, за ответ. Надо завтра будет попробовать.
Но, как я понял и заработало, дело оказалось не в конекте. Банально не хватало виртуальной памяти (файла подкачки).
Для чего мне такой объем выводить в грид. Ну, во-первых - ТЗ, а во вторых - проект для наших продажников и, как я понял, хотят иметь фильтр уже по из полного набора записей (хотя я бы сделал все по другому 8) )
Такая ошибка возникает когда ADO пытается неявно создать дополнительное подключение к серверу, а сделать этого не может. Можно попробовать запретить это делать:
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.