Текущий архив: 2008.04.27;
Скачать: CL | DM;
Вниз
BDE Найти похожие ветки
← →
Loginov Dmitry © (2008-03-11 23:21) [0]Выложил на свой сайт статью, касающуюся проблем, возникающих при работе с BDE.
http://matrix.kladovka.net.ru/index.php?page=bdeproblems
может быть, кому-то материал покажется полезным, а кто-то найдет в нем некорректные данные. Вопросы в конференции "Базы" по BDE все не прекращаются, а здесь будут готовые ответы на небольшую их часть.
Если у кого есть, чем можно дополнить статью, то выкладывайте сюда! :)
← →
ferr (2008-03-11 23:24) [1]любители античности..
← →
Petr V. Abramov © (2008-03-11 23:38) [2]Если несколько приложений параллельно работают с одной и той же таблицей, то все изменения сохраняются в тот же самый (причем общий для всех) кэш, и физически запись в DB-файл произойдет только после того, как все приложения закроют набор данных.
a Database.commit?
не работает?
пробовать нет инструментов
← →
Loginov Dmitry © (2008-03-11 23:41) [3]> любители античности..
работа такая! куда от нее денешься? ;)
← →
Loginov Dmitry © (2008-03-11 23:42) [4]> a Database.commit?
> не работает?
не-а :)
← →
Petr V. Abramov © (2008-03-11 23:54) [5]
> Loginov Dmitry © (11.03.08 23:42) [4]
приведи пример с двумя SQL-Explorer`ами
интересно
← →
Loginov Dmitry © (2008-03-12 00:02) [6]> приведи пример с двумя SQL-Explorer`ами
> интересно
А какой пример нужен?
Открыл 2 программы и одну и туже табличку в них. Второй экземпляр снял из диспетчера. В первом минут 5 вносил изменения и с Commit и без Commit. Затем вышел из программы и зашел заново. Никаких изменений сохранено не было!
← →
Petr V. Abramov © (2008-03-12 00:13) [7]в SQL-Explorer`е сommit не нашел
пусть твое плохое о бывшем будет правильно :)
← →
Loginov Dmitry © (2008-03-12 00:18) [8]> в SQL-Explorer`е сommit не нашел
А что за commit? Я думал, что имеется ввиду commit transaction, но соответствующая кнопка - на видном месте.
← →
Petr V. Abramov © (2008-03-12 00:22) [9]
> что за commit? Я думал, что имеется ввиду commit transaction,
> но соответствующая кнопка - на видном месте.
> Loginov Dmitry © (12.03.08 00:18) [8]
у меня на видном нету, сам удивляюсь, может, че криво, знаю, что д.б. кнопка commit
В чем кривизна разбираться не буду по причинам что не в обиду :)
← →
DrPass © (2008-03-12 00:33) [10]
> Вопросы в конференции "Базы" по BDE все не прекращаются,
> а здесь будут готовые ответы на небольшую их часть.
Подозреваю, что те, кто все еще лезет в BDE, не особо утруждают себя чтением документации и статей...
← →
Petr V. Abramov © (2008-03-12 00:58) [11]Удалено модератором
← →
Anatoly Podgoretsky © (2008-03-12 00:58) [12]В статье нет главного - как настраивать БДЕ, для Парадокса, дБейса.
Надо рассмотреть каждый параметр. А то что приведено - это как бы набор встретившихся проблем, а начинающим не это нужно.
← →
MsGuns © (2008-03-12 01:06) [13]Статья в целом весьма полезная, хотя, ИМХО, не содержит ЯВНОГО указания технологии надежной (насколько применимо это слово к парадоксу) работы с одной и той же таблицей (таблицами) нескольких пользователей, - в частности активного использования личного каталога для копий таблиц-связок (мастеров).
Единственное замечание -вопрос: каким боком к парадоксу стоят транзакции. В "натуральном", так сказать, их смысле ?
← →
Petr V. Abramov © (2008-03-12 01:16) [14]Настоящая статья не преследует цели раскритиковать систему Borland Database Engine, т.к. в настоящее время никто уже не станет разрабатывать новое приложение, использующее BDE для доступа к базам данных, зато при работе "старых" приложений проблемы возникают.
это для тех, кто статью не читал, но хотел бы покритиковать
← →
MsGuns © (2008-03-12 01:19) [15]И еще по поводу надежности.
Бакап, к сожалению, далеко не всегда помогает (имеется в виду простое архивирование раб.каталога с последующим его разархивированием) - "порченные" таблицы запросто сохраняются и восстанавливаются вместе со всеми глюками, в том числе и непосредственно в данным (не в индексах).
Я долго бился в свою очередь над этой проблемой, пока не написал специальный сервис, который состоял в том, что изначально делается "образец" БД вместе со всеми констрэинтами, ключами, индексами и т.д. В этом образце хранятся только пустые таблицы. Сохранение рабочей БД выполняется путем выборки всех записей из всех таблиц и сохранением результатов ("Answer") в таблицах-двойниках в temp-каталоге. Архивируется именно этот каталог. Восстановление выполняется путем разархивирования архива и копирования данных из этих двойников в "образцовые" таблицы БД. Конечно, пришлось поработать, чтобы сделать этот сервис универсальным, не обошлось и без специальных "сервисных" таблиц, хранимых ОТДЕЛЬНО от рабочей БД (которые на 90% процентов создаются автоматически этим же сервисом с любой БД - далее надо просто немного подкрутить иерархию таблиц - и "образец" готов). Зато эта система надежно пашет годы и пользователи после относительно непродолжительной подготовки уже обходятся без программиста.
← →
Германн © (2008-03-12 01:55) [16]3. Данные иногда не сохраняются при выходе из программы.
Также можно с помощью соответствующих DBI-функций можно заставить BDE в любой момент сохранить кэш в DB-файл.
Стоило бы привести названия этих функций, поскольку "начинающий" пока их сам найдет, перестанет быть начинающим. Тем более, что начинающие даже не знают где искать справку по BDE. (Кстати стОит в начале статьи указать где найти справку по BDE и по LocalSQL).
5. Портятся файлы индекса первичного ключа (PX-файлы). При открытии таблицы выдается ошибка "Index out of date". Это распространенная болезнь BDE - портить индексы. Для устранения проблемы нужно либо удалить PX-файл (но кто его будет пересобирать?)
Как кто? Сама программа, которая с данной таблицей работает. Она же знает эту таблицу. Кстати и удалить поврежденный файл PX, тоже она сможет. (Так кстати я и работаю.)
6. Не удается открыть таблицу из-за поврежденного VAL-файла. Для устранения проблемы следует удалить поврежденный VAL-файл (в этом файле хранятся ограничения на поля таблицы). Обычно и без них можно прекрасно обойтись.
Нафиг вообще эти файлы! Они нужны только DBD. И только им и используются. Все ограничения нужно делать в самой своей программе!
17. Не используйте компонент TTable.
Эту фразу выкинуть на фиг. Все остальное из этого пунта можно оставить.
18. Для изменения языкового драйвера
А что? BDEAdmin с этим не справляется? Или в параметрах TDatabase нельзя установить сей драйвер? ТипаDataBase1.Params.Values["LANGDRIVER"] :="..."
Пункт 19 стоит переписать с учетом рекомендаций Борланда.
← →
Loginov Dmitry © (2008-03-12 07:57) [17]> В статье нет главного - как настраивать БДЕ, для Парадокса,
> дБейса.
Этого разве в интернете нет нигде? Если есть, дайте линк (возможно, вставлю его отдельным пунктом и все дела! :)
> Бакап, к сожалению, далеко не всегда помогает (имеется в
> виду простое архивирование раб.каталога с последующим его
> разархивированием)
С статье не указывается, каким образом следует делать бэпап. Можно CopyFile(), можно dbiCopyTable(), а можно с помощью запросов. Зависит от фантазии :)
> Я долго бился в свою очередь над этой проблемой, пока не
> написал специальный сервис
с Парадоксом - только так, иначе ничего более-менее надежного не сделаешь :)
> [16] Германн © (12.03.08 01:55)
Спасиба! Учтем! :)
← →
Jeer © (2008-03-12 10:00) [18]Полагаю писать о старых технологиях следует тем, кто настолько же "стар" в их использовании, т.е. современникам им.
В противном случае - курям на смех.
← →
Игорь Шевченко © (2008-03-12 10:28) [19]"всякого младенца сразу по рождению, только-только перевязав пуповину, следует хорошенько вздуть розгами, приговаривая: «Не пиши, не пиши!»"
(с) А.П.Чехов
Развелось писателей - плюнуть некуда, всяко в писателя попадешь, творящего нетленку.
← →
Loginov Dmitry © (2008-03-12 10:47) [20]
> Полагаю писать о старых технологиях следует тем, кто настолько
> же "стар" в их использовании, т.е. современникам им.
Абсолютно согласен.
Только вот пост твой - ни о чем!
← →
Игорь Шевченко © (2008-03-12 11:05) [21]Я, грешным делом, работаю с BDE в течение 9 лет. Все глюки, наблюдаемые мной, происходили от горе-установщиков BDE "по частям". И все.
Единственный серьезный глюк, обнаруженный и опубликованный на этом сайте в форуме "Базы" связан с тем, что BDE не поддерживает выборку большого размера - то есть, сотни тысяч записей прочитать последовательно не получится, особенно из широкой таблицы. Память кончится. Наблюдалось на Interbase.
Впрочем, dbExpress тоже ломается по той же причине.
← →
Loginov Dmitry © (2008-03-12 11:27) [22]
> Я, грешным делом, работаю с BDE в течение 9 лет. Все глюки,
> наблюдаемые мной, происходили от горе-установщиков BDE
> "по частям". И все.
Да. И от этого глюки тоже бывают.
← →
DiamondShark © (2008-03-12 12:26) [23]Ещё в копилку камушков.
Имеем связку BDE+ODBC (лично я попался на MS SQL Server ODBC driver).
Работаем на уровне изоляции read committed (для MS SQL -- по умолчанию).
Открываем TTable (или TQuery, не шибко принципиально), закачиваем несколько записей (не все!), например, показываем в гриде, потом в другом TQuery (Session, Database -- те же самые!) выполняем INSERT или DELETE.
Если "повезло" (обновлённые записи попали в закачаный диапазон) -- получаем зависание.
Результаты вскрытия.
BDE при открытии датасета не выкачивает все данные сразу, пока не было навигации до конца датасета или вызова FetchAll, BDE держит открытый курсор.
Если ODBC-драйвер возвращает SQLGetInfo(...SQL_ACTIVE_STATEMENTS...) 1, BDE при открытии нового датасета (или исполнении запроса) открывает новое ODBC-подключение (в рамках тех же самых Session и Database!) и в нём выполняет новый запрос. Естественно, этот запрос блокируется из-за наличия невыкачанного результата в другом подключении. А так как это происходит в рамках одного и того же потока, выглядит это как дедлок без всякой возможности выхода (кроме таскменеджера, конечно ;))
Вылечилось это явным вызовом FetchAll (при этом BDE закрывает и уничтожает ODBC-курсор, работая дальше с локальным кэшем), но крови попортило много, пока я не посмотрел в trace-файл ODBC и не офигел.
← →
VICTOR_ (2008-03-12 13:17) [24]Добавит в FAQ
1. Paradox
Сообщение об ошибке
Table is Full
Решение, напр.
http://rxlib.ru/faqs/faqd_en/10318.html
← →
MsGuns © (2008-03-12 21:21) [25]>Игорь Шевченко © (12.03.08 11:05) [21]
>Я, грешным делом, работаю с BDE в течение 9 лет. Все глюки, наблюдаемые мной, происходили от горе-установщиков BDE "по частям". И все.
Дело, наверное, не только в биде, но и в самой базе данных, нес па ?
← →
MsGuns © (2008-03-12 21:24) [26]Мне вот вообще непонятна логика разработчиков, использующих для доступа к скл-серверным БД биде.
Доводы о "легкой" переносимости баз с одного сервера на другой не приводить.
← →
Игорь Шевченко © (2008-03-12 21:28) [27]MsGuns © (12.03.08 21:21) [25]
Дело исключительно в разработчиках. База данных - Interbase, но так как BDE для Cached Updates организует парадоксовские таблицы, то и Paradox тоже. И многопоточный доступ наличествует, и работает без проблем, так как сделан по описанию в Help-е (или в Application Developer Guide - уже не помню за давностью лет).
Через ODBC тоже работали посредством BDE - никаких особенных глюков замечено не было.
А то, что пишет автор - это из серии "я мало знаю, но хочу о себе заявить, наехав на чужой продукт".
Я к чему все это - в Borlandе люди несколько поопытней автора статьи, потому как BDE появился еще до Delphi, как альтернатива ODBC, кстати, и протестирован был оч-чень многими разработчиками по всему миру.
← →
Игорь Шевченко © (2008-03-12 21:41) [28]MsGuns © (12.03.08 21:24) [26]
> Мне вот вообще непонятна логика разработчиков, использующих
> для доступа к скл-серверным БД биде.
А удобно, знаешь ли.
> Доводы о "легкой" переносимости баз с одного сервера на
> другой не приводить.
Эта...Interbase того времени сильно отличался от Firebird сейчас. Да и с прямым доступом в 1998-1999 году худо было.
← →
MsGuns © (2008-03-12 21:44) [29]Мне все же непонятна твоя резкость в отношении к человеку, стремящемуся поделиться опытом и не боящегося попасть под критику "аксакалов".
Следуя твоей идее, петь вообще никому нельзя, кроме Поваротти. Даже на свадьбах ;)
← →
Игорь Шевченко © (2008-03-12 22:14) [30]MsGuns © (12.03.08 21:44) [29]
> Мне все же непонятна твоя резкость в отношении
А ты статью почитай - поймешь. Это как мода - вот решили, что BDE маст дай, так все будут объявлять, что он маст дай.
Автор где-то пишет, что если снимать приложение из диспетчера задач, то данные не сохраняются. Натурально BDE в этот виноват. Я могу посоветовать снять среду из диспетчера задач. И почаще. Авось тоже что-то не сохранится.
← →
Petr V. Abramov © (2008-03-12 22:55) [31]нормальня статья.
не без недостатков, есть такое на моё ИМХО.
но если б я только с описываемым чудом (BDE) столкнулся (брррр) че-0то было б полезно
← →
Loginov Dmitry © (2008-03-12 23:00) [32]> А то, что пишет автор - это из серии "я мало знаю, но хочу
> о себе заявить, наехав на чужой продукт
Игорь, Вы верно что-то лишнее между строк вычитали. Цель статьи - не наезды, а описание реальных (зачастую неочевидных) проблем, возникающих при работе с BDE. Причем в начале статьи сразу говорится, что речь пойдет о таблицах Paradox. Я с интербейзом не работал через BDE, поэтому не могу знать, какие глюки у BDE возникают в отношении этой СУБД.
> протестирован был оч-чень многими разработчиками по всему
> миру
Верю! Вы совершенно правы! Любой продукт подобного уровня тщательно тестируется и "обкатывается". Но я-то здесь причем? Я просто пишу про то, что мы сейчас имеем.
Я вижу, что статья Вам не интересна. Вы и так все, описанное в ней, знаете. Но опыты здесь зачем сравнивать... как-то это не в тему...
> Автор где-то пишет, что если снимать приложение из диспетчера
> задач, то данные не сохраняются. Натурально BDE в этот виноват.
> Я могу посоветовать снять среду из диспетчера задач. И почаще.
> Авось тоже что-то не сохранится.
Вам бы всех только критиковать! Ваши приложения, наверно никогда в жизни не зависали, и Вам не приходолось ни разу пользоваться диспетчером задач. Я рад за Вас, но не все же такие совершенные!
← →
Германн © (2008-03-13 02:18) [33]
> Loginov Dmitry © (12.03.08 23:00) [32]
>
> > А то, что пишет автор - это из серии "я мало знаю, но
> хочу
> > о себе заявить, наехав на чужой продукт
>
>
> Игорь, Вы верно что-то лишнее между строк вычитали. Цель
> статьи - не наезды, а описание реальных (зачастую неочевидных)
> проблем, возникающих при работе с BDE. Причем в начале статьи
> сразу говорится, что речь пойдет о таблицах Paradox.
Да ты не переживай так сильно. Ты сам в сабже первой строчкой укорил именно BDE, а не Парадокс. :)
← →
Loginov Dmitry © (2008-03-13 07:34) [34]> Ты сам в сабже первой строчкой укорил именно BDE, а не Парадокс
Перечитал. Укора не увидел. Так что же за строка всех так задела?
← →
data © (2008-03-13 09:55) [35]а по-моему статья полезная. Я сама правда давно со многим из этого сталкивалась.
> Я с интербейзом не работал через BDE, поэтому не могу знать,
> какие глюки у BDE возникают в отношении этой СУБД.
я работала с Ораклом через BDE, глюков тоже достаточно. Чего стоит хотябы подсовывание лишних байтов при чтении Lob полей.
← →
Anatoly Podgoretsky © (2008-03-13 18:04) [36]
> Этого разве в интернете нет нигде? Если есть, дайте линк
> (возможно, вставлю его отдельным пунктом и все дела! :)
Информация разбросана по разным сайта, цельной нет.
Твоя статья называется
Проблемы, которые могут возникать при использовании BDE и способы их решения
Главная проблема у начинающего - это настройка БДЕ.
← →
Loginov Dmitry © (2008-03-13 21:10) [37]> [36] Anatoly Podgoretsky © (13.03.08 18:04)
Уже прошелся по поисковикам. Гугл материала достаточно выдал (по большей части - на английском). Четкой расшифровки некоторых параметров настройки BDE не нашел - все уровня "установи здесь такую-то циферьку и будет счастье". В справке по BDEAdmin разделов по этой теме почему-то не оказалось.
Но постараюсь еще поискать и добавлю после в статью.
← →
oldman © (2008-03-14 08:04) [38]Чего наехали-то? :)
Ну наступил человек на 19 граблей.
Ну выложил описание граблей на видном месте (у себя, кстати, выложил, а не у вас).
Ну и хорошо.
Все лучше, чем никак...
← →
oldman © (2008-03-14 08:08) [39]
> Loginov Dmitry ©
т.к. в настоящее время никто уже не станет разрабатывать новое приложение, использующее BDE для доступа к базам данных,
"Это вы сами так решили, или вам кто-то сказал?" ©
← →
Loginov Dmitry © (2008-03-14 17:38) [40]Еще камешек, заслуживающий внимания
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=18617
Обязательно добавлю! :)
Страницы: 1 2 вся ветка
Текущий архив: 2008.04.27;
Скачать: CL | DM;
Память: 0.59 MB
Время: 0.018 c