powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FireBird embedded, совместный доступ к файлу базы
25 сообщений из 310, страница 11 из 13
FireBird embedded, совместный доступ к файлу базы
    #39641097
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommer,

зачем 50? Считаем версии 1.0, 1.5, 2.1, 2.5, 3.0, 4.0. Собственно 6 версий. И то не факт что все нужны. По факту остаётся 2.5, 3.0 (4.0 пока только потестить). 2 версии сервера. Всего то
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641098
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Дениспо моему я тебе уже разжевал как из UDR подключаться к другой БД Firebird.
Я внимательно читаю и внимательно пишу.
Как из сервера 3.0.0 подключиться к database.fdb c ODS 13?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641100
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommer,

как обычно. Ещё раз по TCP подключишься без проблем. Встраивать чужеродные dll в UDR только для взаимодействия с embedded в топку
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641101
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисHommer,

зачем 50? Считаем версии 1.0, 1.5, 2.1, 2.5, 3.0, 4.0. Собственно 6 версий. И то не факт что все нужны. По факту остаётся 2.5, 3.0 (4.0 пока только потестить). 2 версии сервера. Всего то
А перед подключением к нужной из 50 баз не забыть скопировать udr или udf нужных версий и не забыть подменить конфиги.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641102
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисHommer,

как обычно. Ещё раз по TCP подключишься без проблем. Встраивать чужеродные dll в UDR только для взаимодействия с embedded в топку
Так с TCP с самого начала никаких проблем и нет. Мы же говорим про то когда нужно без сервера работать. Или нет?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641105
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerА перед подключением к нужной из 50 баз не забыть скопировать udr или udf
нужных версий и не забыть подменить конфиги.

UDR и UDF могут быть общие: правила для них не менялись. А конфиги-то назачем подменять?
Каждый сервер, к счастью, умеет читать свой собственный конфиг.

HommerМы же говорим про то когда нужно без сервера работать. Или нет?

Это ты говоришь, что тебе приспичило без сервера работать. А остальные просто знают, что
это так не работает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641109
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerКак из сервера 3.0.0 подключиться к database.fdb c ODS 13?
подложить engine13 в plugins, прописать его в строке Providers. Подключаться через уже загруженный троешный fbclient.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641110
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovHommerА перед подключением к нужной из 50 баз не забыть скопировать udr или udf
нужных версий и не забыть подменить конфиги.

UDR и UDF могут быть общие: правила для них не менялись. А конфиги-то назачем подменять?
Каждый сервер, к счастью, умеет читать свой собственный конфиг.
Базы из разных проектов и используют свой конфиг. Udf или udr библиотека одна, но разных версий.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641111
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommer,

опять фантазии. Ты уже придумал некую UDR с внутренними коннектами к embed для ODS 13 и наткнулся на реальные проблемы, или пока всё теоретизируешь?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641113
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitrHommerКак из сервера 3.0.0 подключиться к database.fdb c ODS 13?
подложить engine13 в plugins, прописать его в строке Providers. Подключаться через уже загруженный троешный fbclient.
Это хорошо.
А как заиспользовать udr, которые возможно пересекаются по именам с теми что есть в сервере 3.0.0, но разных версий?
Как быть с icu? Если база была создана в FB 4, с icu одной версии, а будет использоваться с icu от 3.0.0?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641116
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисHommer,

опять фантазии. Ты уже придумал некую UDR с внутренними коннектами к embed для ODS 13 и наткнулся на реальные проблемы, или пока всё теоретизируешь?
Зачем писать что-то подобное, если знаешь что оно не заработает?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641119
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrHommerКак из сервера 3.0.0 подключиться к database.fdb c ODS 13?
подложить engine13 в plugins, прописать его в строке Providers. Подключаться через уже загруженный троешный fbclient.
А engine13 в этом случае не могут понадобится какие-то новые entrypoint, отсутствующие в троешном fbclient?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641120
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerНужно избавиться от статической линковки, как и сказал ВладА Баба-Яга M$ - против (выделено мною):
DllMain entry pointThe entry-point function should perform only simple initialization or termination tasks.
It must not call the LoadLibrary or LoadLibraryEx function (or a function that calls these functions), because this may create dependency loops in the DLL load order.
This can result in a DLL being used before the system has executed its initialization code.
Similarly, the entry-point function must not call the FreeLibrary function (or a function that calls FreeLibrary) during process termination, because this can result in a DLL being used after the system has executed its termination code.

Because Kernel32.dll is guaranteed to be loaded in the process address space when the entry-point function is called, calling functions in Kernel32.dll does not result in the DLL being used before its initialization code has been executed.
Therefore, the entry-point function can call functions in Kernel32.dll that do not load other DLLs.
For example, DllMain can create synchronization objects such as critical sections and mutexes, and use TLS.
Unfortunately, there is not a comprehensive list of safe functions in Kernel32.dll .

Calling functions that require DLLs other than Kernel32.dll may result in problems that are difficult to diagnose .
For example, calling User, Shell, and COM functions can cause access violation errors, because some functions load other system components.
Conversely, calling functions such as these during termination can cause access violation errors because the corresponding component may already have been unloaded or uninitialized.
То есть, теоретически, сделать динамическую загрузку можно, но требуется хорошо понимать какой Иаков грузит какого Якова.
Ну и необходима обоснованная уверенность, что списки зависимых библиотек не поменяются фатальным образом.

Или я, опять-таки, не секу фишку и существует возможность делать динамическую загрузку одной dll из другой вне DllMain?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641123
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovHommerМы же говорим про то когда нужно без сервера работать. Или нет?

Это ты говоришь, что тебе приспичило без сервера работать. А остальные просто знают, что
это так не работает.

Мне не приспичило. Просто одно дело - войти в папку проекта пяти или десятилетней давности, запустить exe-шник и всё сразу работает, без сервера. А другое дело - поднять сервер нужной конфигурации на свободном порту, подправить конфиг в программе и только потом запускать. Я embedded использую начиная c yaffil. Все удобства знаю.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641124
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hommer,

ты это, не путай своё приложение написанное 100500 лет назад. И IBExpert. Нужно открыть в IbExpert БД для разработки/внесения изменений, то почему бы и не поставить сервер.

Вот у меня прямо сейчас стоят 2.5, 3.0 и 4.0 (а на работе ещё и 1.5 крутится). И меня это ни капли не парит
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641128
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerЗачем вам ещё пример? Почему не хватает IBExpert?
IBE тут не канает, потому что у него старый FIBplus, то есть, он как эталон примера не подходит.
И, как я уже сказал, в IBE лазить по разным embedded одновременно - это изврат.
HommerПочему не хватает вот этого: 21391196 + немного фантазии?
потому что фантазии эти вымученные.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641129
Hommer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovHommerНужно избавиться от статической линковки, как и сказал ВладА Баба-Яга M$ - против (выделено мною):
DllMain entry pointThe entry-point function should perform only simple initialization or termination tasks.
It must not call the LoadLibrary or LoadLibraryEx function (or a function that calls these functions), because this may create dependency loops in the DLL load order.
This can result in a DLL being used before the system has executed its initialization code.
Similarly, the entry-point function must not call the FreeLibrary function (or a function that calls FreeLibrary) during process termination, because this can result in a DLL being used after the system has executed its termination code.

Because Kernel32.dll is guaranteed to be loaded in the process address space when the entry-point function is called, calling functions in Kernel32.dll does not result in the DLL being used before its initialization code has been executed.
Therefore, the entry-point function can call functions in Kernel32.dll that do not load other DLLs.
For example, DllMain can create synchronization objects such as critical sections and mutexes, and use TLS.
Unfortunately, there is not a comprehensive list of safe functions in Kernel32.dll .

Calling functions that require DLLs other than Kernel32.dll may result in problems that are difficult to diagnose .
For example, calling User, Shell, and COM functions can cause access violation errors, because some functions load other system components.
Conversely, calling functions such as these during termination can cause access violation errors because the corresponding component may already have been unloaded or uninitialized.
То есть, теоретически, сделать динамическую загрузку можно, но требуется хорошо понимать какой Иаков грузит какого Якова.
Ну и необходима обоснованная уверенность, что списки зависимых библиотек не поменяются фатальным образом.

Или я, опять-таки, не секу фишку и существует возможность делать динамическую загрузку одной dll из другой вне DllMain?
Чтобы всё заработало, нужно из fbclient.dll грузить engine12.dll примерно так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
var
  Handle: HModule;
  InitProc: procedure (Handle: HModule); stdcall;
begin
  // GetModuleName(HInstance) вызванное изнутри dll возвращает полный путь к этой dll.
  Handle := LoadLibrary(ExtractFilePath(GetModuleName(HInstance)) + 'plugins\engine12.dll');
  InitProc := GetProcAddress(Handle, 'Init');
  InitProc(HInstance);
end;


Из engine12.dll должна быть экспортирована процедура Init:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
var
  FirebirdClientHandle: HModule;
  fb_get_master_interface: function(): IMaster; cdecl;

procedure Init(FbClientHandle: HModule); stdcall;
begin
  FirebirdClientHandle := FbClientHandle;
  fb_get_master_interface := GetProcAddress(FirebirdClientHandle, 'fb_get_master_interface');
end;


И то же самое проделать с другими плагинами.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641135
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HommerЧтобы всё заработало, нужно из fbclient.dll грузить engine12.dll примерно так:"Меня опять терзают смутные сомнения", что вы - любитель стоять на голове ...

Windows 7 x64, что не суть.
Есть "%ProgramFiles%\FB3.0" - каталог сервера версии 3.0.3.
Создаю отдельный "%ProgramFiles%\FBClient".
Копирую из "серверного" каталога в "клиентский":
Код: plaintext
1.
2.
3.
4.
5.
 firebird.conf, database.conf;
 fbclient.dll
 icu*;
 plugins/srp.dll
 intl/*
 isql.exe

Перехожу в "серверный" каталог, запускаю "firebird -a".
Делаю "сменить пользователя" и под этим другим пользователем (без прав администратора) запускаю:
Код: plaintext
 isql localhost:employee -u sysdba -p masterke
Подключаюсь к базе, вижу таблицы, могу делать выборки.
Следовательно, для работы клиента никаких engineXX.dll - не требуется.

Кто, кому и, главное, на каком основании должен что-то грузить?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641161
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

у меня чуть не так:
- все ФБ и ИБ на D:\ в корне. D:\Firebird15, D:\Firebird30, D:\IB2017 и так далее. Иногда приходится запускать gbak или другую команду НЕ от работающей версии, а писать в командной строке C:\Program files\Firebird25\bin\... я долбанусь.
Имена папок все короткие (для ИБ даже не InterBase..., а просто IB...). Можно было бы и Firebird до FB сократить.
Что касается минорных билдов, я их по мере возможности сохраняю либо в подпапках Update, либо просто под именем типа fbserver212.exe в одном каталоге Firebird21\bin.

- есть cmd, который глушит всех, т.е. вызывает instreg remove ... для всех имеющихся ИБ и ФБ (у меня их штук 20), потому что ИБ без instreg не работает, ну и вообще на всякий случай

- когда мне надо, в окне cmd захожу в конкретную папку ФБ или ИБ, запускаю fbserver -a, firebird -a, ibserver -a, и так далее.
Исключительно в режиме приложения. Сервисом запускается только ИБ 4.

- надо запустить сразу два сервера - у второго открываю конфиг, меняю порт, запускаю один с дефолтным, потом второй с умолчательным.

Плюсы - запущенный сервак и версию видно в трее. Можно завершить не лазяя в службы.
Если сделать совсем зашибись, то можно поналепить одинаковых командных файлов cmd, которые будут запускать конкретную версию. Но мне так делать лениво.

Мораль: свое рабочее место надо настраивать. :-) А не тыкать в какие-то левые embedded из IBE.

p.s. замечу, что 2 ИБ нельзя запустить одновременно без реального траходрома с инстансами.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641167
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvу меня чуть не так:У меня - пример.
"Прямщас" мне вообще не нужен FB, но лет восемь назад требовался. Вот тогда я и разобрался с одновременным запуском серверов разных версий, с отдельными (и "усечёнными") клиентами.
Сейчас я вижу разницу в некоторых деталях, но, в целом, всё более-менее "по-старому". В частности, не вижу проблем держать одновременно запущенными пару-тройку серверов и ходить к ним "самым свежим клиентом" (без проблем) или "к каждому своим клиентом" (тоже без проблем).
"По-моему - так" (ц) Винни-Пух.

P.S. Назначили каждому серверу порт, равный 10000 + major*1000 + medium*100 + minor*10 - и дело с концом.
Вроде, и для любых разумных задач хватит и думать особо не требуется.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641170
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarВнимательный читатель увидит,что я выше по тексту давал картинку из инспектора объектов явно не Делфи и давал ссылку на перепиленый ibx.

Для тех кто не работал на Delphi выше седьмого - твоя картинка вообще не информативна.
Lazarus я запускал, но не помню там инспектора.
Из остальных Delphi выше D7 ставил только Turbo, но и там инспектор не запомнился.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641171
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks, ну извини :) У меня как-то прикол был, я на D7 пользуюсь CnPack для подсветки синтаксиса, просил товарища мне помочь с кодом, он по удаленке подцепился и семерку не узнал :)
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641204
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv- надо запустить сразу два сервера - у второго открываю конфиг, меняю порт, запускаю один с дефолтным, потом второй с умолчательным.
а я на винде уже давно перестал ставить FB инсталлятором и мусорить в реестре. Складываю в одном месте разные версии по разным папкам, рядом кладу батники а-ля <сервер FB> -a -p xxxx и правлю конфиги. Когда надо что-то проверить, запускаю. Никто ни с кем не конфликтует. Жаль, что на линуксе такой номер не прокатывает.

зы. Глянул я на название треда - ничего общего с обсуждаемыми вопросами. Потом опять будем думать, что кто-то что-то умное сказал, но в пятнице
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641208
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокЖаль, что на линуксе такой номер не прокатывает.Там, наверное, какой-нибудь префикс можно указать в процессе "растаривания"?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39641267
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovДокЖаль, что на линуксе такой номер не прокатывает.Там, наверное, какой-нибудь префикс можно указать в процессе "растаривания"?
нет, там софт по привычке всегда лезет (а большинство инсталляторов туда сует файло) в папку /usr/*.* и /etc/*.* :)
...
Рейтинг: 0 / 0
25 сообщений из 310, страница 11 из 13
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FireBird embedded, совместный доступ к файлу базы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]