Clarion 5.5 EE & ODBC & Sybase Asa 9
Добавлено: 23 Октябрь 2006, 15:21
Добрый день всем!
У меня есть проект, он не мой, но я его поддерживаю, есть исходный текст. Это проект (складская программа) разбит на несколько DLL (около 10шт.) и каждая DLL иммет свой словарь. Файлы в некоторых DLL пересекаются (т.е. один и тот же файл описан в разных словарях).
Этот проект работал ранее на Btrieve 6.15 for win. Затем я сменил Btrieve на Pervasive (но не SQL, а файловый вариант.).
И решил попробывать проект перенести на SQL.
Я взял за СУБД Sybase Asa 9 т.к. очень хорошо ее знаю. Переделал в словарях драйверы данных - вместо Btrieve указал ODBC. В owner указал имя источника ODBC; логин ; пароль.
Проект запустился и работает.
НО...
Есть проблема если запущено окно из DLL №1, а логика лежит в DLL№2 то программа слетает с ошибкой
****************************************
[Resource governor for 'prepare statements' exceeded (S1000)] при
считывании записи файла ...
****************************************
Поискав в интернете я нашел следующее:
*********************************************
Хоть я и не знаю ASP, но могу точно сказать, что дело не в сервере, а
ASP и Вашем коде на нем. Во первых нужно посмотреть, не стоит ли на OLE DB соединении флаг "Asynchronous", означающий синхронное выполнение запросов, где соединение посылает запрос на сервер и не дожидаясь его выполнения передает управление обратно приложению для дальнейшей работы. Во вторых открываете ли Вы для каждого соединения в ASP отдельную сессию работы с СУБД или же пытаетесь работать через один коннект ? В случае попытки работы всех параллейных соединений клиентов ASP через одно соединение с БД Вы и получите как раз такую ошибку. Правильным может быть только организация на каждого клиента ASP собственного соединения с БД.
**********************************************
т.е. (как я понял) каждая DLL проекта имеет (или пытается иметь)свое подключение к базе и при работе с базой нескольких DLL и вылезает эта ошибка.
Есть ли способ как-нибудь это обойти?
Или мне все таки придется собрать все DLL в один проект?
С ув. Александр
У меня есть проект, он не мой, но я его поддерживаю, есть исходный текст. Это проект (складская программа) разбит на несколько DLL (около 10шт.) и каждая DLL иммет свой словарь. Файлы в некоторых DLL пересекаются (т.е. один и тот же файл описан в разных словарях).
Этот проект работал ранее на Btrieve 6.15 for win. Затем я сменил Btrieve на Pervasive (но не SQL, а файловый вариант.).
И решил попробывать проект перенести на SQL.
Я взял за СУБД Sybase Asa 9 т.к. очень хорошо ее знаю. Переделал в словарях драйверы данных - вместо Btrieve указал ODBC. В owner указал имя источника ODBC; логин ; пароль.
Проект запустился и работает.
НО...
Есть проблема если запущено окно из DLL №1, а логика лежит в DLL№2 то программа слетает с ошибкой
****************************************
[Resource governor for 'prepare statements' exceeded (S1000)] при
считывании записи файла ...
****************************************
Поискав в интернете я нашел следующее:
*********************************************
Хоть я и не знаю ASP, но могу точно сказать, что дело не в сервере, а
ASP и Вашем коде на нем. Во первых нужно посмотреть, не стоит ли на OLE DB соединении флаг "Asynchronous", означающий синхронное выполнение запросов, где соединение посылает запрос на сервер и не дожидаясь его выполнения передает управление обратно приложению для дальнейшей работы. Во вторых открываете ли Вы для каждого соединения в ASP отдельную сессию работы с СУБД или же пытаетесь работать через один коннект ? В случае попытки работы всех параллейных соединений клиентов ASP через одно соединение с БД Вы и получите как раз такую ошибку. Правильным может быть только организация на каждого клиента ASP собственного соединения с БД.
**********************************************
т.е. (как я понял) каждая DLL проекта имеет (или пытается иметь)свое подключение к базе и при работе с базой нескольких DLL и вылезает эта ошибка.
Есть ли способ как-нибудь это обойти?
Или мне все таки придется собрать все DLL в один проект?
С ув. Александр