|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Симонов ДенисGallemarУ кого есть Delphi XE и выше? Там ibx разрешает выбрать клиентскую библиотеку или просто выбор firebird/interbase? Кстати есть ещё клон IBX2 для Firebird выпускается под Lazarus https://www.mwasoftware.co.uk Он кстати довольно далеко ушёл от оригинала. Ничего подобного. Не далее, как пару дней назад бодался с ним, пытаясь убедить, что тру IBX компоненты должны иметь возможность выбора клиентской библы в виде public property. Он упёрся, пытаясь мне доказать, что загрузку клиента должна делать ОСь из переменной FBLIB. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 16:52 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Докзагрузку клиента должна делать ОСь из переменной FBLIB. это какой-то позор. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 16:58 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Любезный, Пилится то пилится, но в XE5 мне для этого пришлось вторгаться в штуки три разных юнита и (чтобы по уму) дописать как бы не несколько страниц повергающего самого в изумление кода. Мы же, на сколько понимаю, говорим об исчерпывающих рецептах не снобам, а неофитам. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 17:02 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
kdvЛюбезный, http://docwiki.embarcadero.com/Libraries/Tokyo/en/IBX.IBDatabase.TIBDatabase_Properties нет там такого. В Лазарусе - что угодно, там ИБХ допиленный. Внимательный читатель увидит,что я выше по тексту давал картинку из инспектора объектов явно не Делфи и давал ссылку на перепиленый ibx. Насколько помню ты как то сам рассказывал как допилил выбор клиента, если не найдет gds32,то возьмет fbclient. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 17:03 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Док, почитал аргументацию, какие-то зёрна там есть, но в целом - отказать. По его мнению - КТО должен устанавливать имя либы в переменной FBLIB? Неужели само приложение? :-) А если оно с флэшки запускается, то кто - юзер перед его запуском? Ну указал юзер там полный путь к либе в дизайн-тайме. Значит сам виноват. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 17:04 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
ДокОн упёрся, пытаясь мне доказать, что загрузку клиента должна делать ОСь из переменной FBLIB. Точнее его поделие грузит библиотеку оттуда. Ну... это ещё не худшее, что может случиться. Помнится, когда Firebird 1.5 была ещё в проекте, её разработчики хотели заставить всех искать клиентскую библиотеку каждого инстанса отдельно, по записям в реестре. К счастью, они не довели свои планы до конца. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 17:05 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Шавлюк ЕвгенийВажное отличие 3.0 от 2.5 - тип сервера по-умолчанию. Для 2.5 - Classic, для 3.0 - Super Из-за этого в 3.0 без изменения этого параметра в firebird.conf нет возможности одновременно подключиться к одной БД. имхо, вот это надо прибить эпиграфом к статье об embedded :) kdvПо его мнению - КТО должен устанавливать имя либы в переменной FBLIB? юзер, вестимо. У меня создалось впечатление, что он пилит компонент на линуксе, а значит ручками задавать всякие параметры (в т.ч. и пути к библиотекам FB) в терминале для него естественно, как дыхание :) Если обратил внимание, в качестве альтернативы он предлагает жестко задавать в designtime пути к клиенту в OnGetLibraryName, что, по сути, ничем не лучше. Dimitry SibiryakovТочнее его поделие грузит библиотеку оттуда. Ну... это ещё не худшее, что может случиться. да уж, яркий тому пример - FlameRobin c его статической линковкой libfbclient.so.2. Поневоле зауважаешь Хвастунова за его удобный IBE :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 18:23 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Котовасия... ...и скачать последнюю версию архива с Firebird embedded, например: https://github.com/FirebirdSQL/firebird/releases/download/R2_5_8/Firebird-2.5.8.27089-0_Win32_embed.zip Распаковываем прямо в папку с клиентским приложением... Фигню написал. :( Уточнение. Клиентская библиотека (fbclient.dll/gds32.dll) должна быть доступна клиентскому приложению в соответствии с правилами пути поиска, используемых Windows для обнаружения библиотеки DLL : https://msdn.microsoft.com/ru-ru/library/7d83bc18.aspx То есть, например, клиентское приложение должно находиться в той же папке, что и клиентская библиотека (fbclient.dll/gds32.dll), или путь должен быть указан "глобально", в переменной окружения PATH. Или "локально" (т.е., только для данного процесса) - с помощью функции API SetEnviromentVariable. И т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 19:34 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
FB 3.0*. Многое не так, как в FB 2.5, читаем «иещеболее» внимательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 19:35 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Где брать файлы для Firebird embedder 3.0*? Отдельного пакета для Firebird Embedded больше нет. Файлы берем вот здесь: https://www.Firebirdsql.org/en/Firebird-3-0/ Ищем “Zip kit for manual/custom install”, например: https://github.com/FirebirdSQL/Firebird/releases/download/R3_0_3/Firebird-3.0.3.32900-0_Win32.zip Скачиваем, распаковываем в отдельную папку. Смело удаляем подпапки doc, examples, system32, include, lib, misc, help. Удаляем все файлы с расширениями «exe» и «bat». Если вы уже знаете, для чего нужны эти «exe» - шники, и они вам действительно нужны - их удалять не следует. Например, оставить gfix, gstat, gbak, isql и nbackup. Также удаляем fbrmclib.dll, fbtrace.conf, security3.fdb. В папке plugis удаляем все файлы, кроме файла engine12.dll. Как было сказано ранее, из-за особенностей клиентского кода (использование старых «дельфийских» компонентов ibx, например), возможно, придется переименовать клиентскую библиотеку: fbclient.dll переименовать в gds32.dll. Клиентская библиотека (fbclient.dll/gds32.dll) должна быть доступна клиентскому приложению в соответствии с правилами пути поиска, используемых Windows для обнаружения библиотеки DLL: https://msdn.microsoft.com/ru-ru/library/7d83bc18.aspx То есть, например, клиентское приложение должно находиться в той же папке, что и клиентская библиотека (fbclient.dll/gds32.dll), или путь должен быть указан "глобально", в переменной окружения PATH. Или "локально" (т.е., только для данного процесса) - с помощью функции API SetEnviromentVariable. И т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 19:39 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Настройка режима embedded 1. Уже можно работать. Для работы с файлом базы по «embedded» протоколу, клиентское приложение в строке коннекта должно указать лишь путь к файлу базы. Правильно: D:\MyFiles\MyBase.fdb Не стоит указывать сетевой путь (даже Localhost или 127.0.0.1). Неправильно: Localhost:D:\MyFiles\MyBase.fdb Если вы укажите в строке коннекта сетевой путь, то Firebird embedded превратится в обыкновенную клиентскую библиотеку, обеспечивающую доступ к удаленному не-embedded серверу Firebird. При «embedded» коннекте не требуется логин или пароль . Однако №1: некоторые клиентские утилиты и библиотеки могут требовать их наличия (например, будет появляться окно диалога с требованием указать логин и пароль) – в этом случае нужно указывать «хоть что-то». Однако №2: SQL привилегии (права на объекты, «гранты») продолжают действовать. Таким образом, при «embedded» логине пользователь должен соответствовать выданным правам. (при коннекте с username=SYSDBA, таким образом, получим доступ ко всем объектам). Но все это пока не обеспечивает одновременный доступ к файлу базы из разных процессов . ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 19:41 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Настройка режима embedded 2. Обеспечение одновременного доступа к файлу базы из разных процессов. Открываем в текстовом редакторе файл Firebird.conf, находим строку: #ServerMode = Super Редактируем ее, должно получиться: ServerMode = Classic Важно 1: Перед завершением приложения, использующего Firebird embedded, следует вызвать функцию fb_shutdown(). 21386074 Важно 2: Пред вызовом функции fb_shutdown() следует сохранить управляющее состояние FPU, а затем – восстановить его. Обычно клиентские библиотеки делают это самостоятельно, но в данном случае придется делать все руками. 21386074 Замечание. fb_shutdown() следует вызывать лишь после того, как был выполнен минимум один коннект к базе или к сервису (даже если всего лишь версию клиента запросите). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 19:44 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
... Для FB 3.0* - всё? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 19:44 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
КотовасияПеред завершением приложения, использующего Firebird embedded, следует вызвать функцию fb_shutdown()Точнее - перед выгрузкой клиентской библиотеки. КотовасияПред вызовом функции fb_shutdown() следует сохранить управляющее состояние FPU, а затем – восстановить егоОткуда это требование ? Котовасияfb_shutdown() следует вызывать лишь после того, как был выполнен минимум один коннект к базе или к сервисуА это откуда ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 19:51 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
hvlad, насчет FPU - это требование дельфистов, использующих extended. Вернее, взвывших покупателей нашего продукта, потерявших точность при вычислениях. Насчет второго - это исходя из опыта. Когда вызывался fb_shutdown() просто так, без предварительного коннекта - все падало. Может, уже исправили, но я на всякий случай все еще дую на холодную воду. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 19:56 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Котовасиянасчет FPU - это требование дельфистов, использующих extended. Вернее, взвывших покупателей нашего продукта, потерявших точность при вычислениях.Сто лет как все вызовы API сохраняют и восстанавливают маску FPU. fb_shutdown - не исключение КотовасияНасчет второго - это исходя из опыта. Когда вызывался fb_shutdown() просто так, без предварительного коннекта - все падало.Тоже сто лет назад что-то такое было. КотовасияМожет, уже исправили, но я на всякий случай все еще дую на холодную воду.Не надо дуть, это может быть вредно ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 20:03 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
hvlad, не, конкретно именно с fb_shutdown() несколько раз было "сломали - починили - сломали - починили", я уж лучше подстрахуюсь, чем из отпуска во все лопатки лететь. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 20:12 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Ещё: embedded 2.5 и embedded 3 могут быть использованы одновременно. Пример - IB Expert. Разные embedded 3 вроде как не могут быть использованы одновременно, т.к. dll-ки путаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 20:17 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Котовасия Важно 1: Перед завершением приложения, использующего Firebird embedded, следует вызвать функцию fb_shutdown(). 21386074 Уточни без отсылок на вторичную документацию, когда это действительно нужно делать, а когда необязательно. И чем и когда конкретно грозит. Ибо я с IBX различных версий (а сейчас еще дополнительно с FireDAC) никогда сам дополнительно этого не делал и действительно не понимаю в этой связи столь категоричного требования. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 20:22 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Hommer, сначала объясни на фига из одного приложения несколько embedded разных версий использовать. Вот хоть убей не могу придумать ситуацию когда это необходимо ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 20:23 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
hvlad...Сто лет как все вызовы API сохраняют и восстанавливают маску FPU. fb_shutdown - не исключение ... Тоже сто лет назад что-то такое было. ... Посмотрел историю: в начале 2015-го сие было. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 20:24 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Vlad FКотовасия Важно 1: Перед завершением приложения, использующего Firebird embedded, следует вызвать функцию fb_shutdown(). 21386074 Уточни без отсылок на вторичную документацию, когда это действительно нужно делать, а когда необязательно. И чем и когда конкретно грозит. Ибо я с IBX различных версий (а сейчас еще дополнительно с FireDAC) никогда сам дополнительно этого не делал и действительно не понимаю в этой связи столь категоричного требования. Если все в порядке - не делай. Может, нонешние IBX сами все делают. А как заметишь, что при завершении приложения какие-то глюки или фризы - попробуй постучать в сей бубен. Я все время делаю. У меня древние FIB+, разработчики тогда знали про fb_shutdown(). Кстати, хорошая идея, надо бы добавить в код. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 20:29 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Ой. Котовасия... Я все время делаю. У меня древние FIB+, разработчики тогда НЕ знали про fb_shutdown(). Кстати, хорошая идея, надо бы добавить в код. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 20:30 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Котовасия, Ты пытаешься взять на себя ответственность составить общественно полезный FAQ или просто писульку в столь из серии, сделайте так или может быть так, а если этого на самом деле не нужно, то я, типа ни при делах? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 20:32 |
|
FireBird embedded, совместный доступ к файлу базы
|
|||
---|---|---|---|
#18+
Котовасияhvlad...Сто лет как все вызовы API сохраняют и восстанавливают маску FPU. fb_shutdown - не исключение ... Тоже сто лет назад что-то такое было. ... Посмотрел историю: в начале 2015-го сие было.Чью историю ? Свою ? Кого она волнует ? :) В какой версии клиента это было ? И что именно было ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2018, 20:34 |
|
|
start [/forum/topic.php?fid=40&msg=39640384&tid=1561112]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 154ms |
0 / 0 |