powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FireBird embedded, совместный доступ к файлу базы
25 сообщений из 310, страница 1 из 13
FireBird embedded, совместный доступ к файлу базы
    #39639704
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скоро kdv статью напишет. А пока не написал.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639705
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начиная с версии 2.5, FB может обеспечить совместный доступ к одному файлу БД из разных процессов.
Для работы с файлом базы по «embedded» протоколу, клиентское приложение в строке коннекта должно указать лишь путь к файлу базы.
Правильно:
D:\MyFiles\MyBase.fdb

Не стоит указывать сетевой путь (даже Localhost или 127.0.0.1).
Неправильно:
Localhost:D:\MyFiles\MyBase.fdb

Если вы укажите в строке коннекта сетевой путь, то FireBird embedded превратится в обыкновенную клиентскую библиотеку, обеспечивающую доступ к удаленному не-ebmbedded серверу FireBird. Правда, удобно? :)

При «embedded» коннекте не требуется указывать логин или пароль . Однако №1: некоторые клиентские утилиты и библиотеки могут требовать их наличия – в этом случае нужно указывать «хоть что-то».
Однако №2: SQL привилегии (права на объекты, «гранты») продолжают действовать. Таким образом, при «embedded» логине пользователь должен соответствовать выданным правам. (при коннекте с username=SYSDBA, таким образом, получим доступ ко всем объектам).
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639706
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB 2.5.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639707
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB 2.5, набор необходимых файлов :
Найти (здесь: http://www.firebirdsql.org/en/firebird-2-5/ ) и скачать последнюю версию архива с Firebird embedded, например: https://github.com/FirebirdSQL/firebird/releases/download/R2_5_8/Firebird-2.5.8.27089-0_Win32_embed.zip

Распаковываем прямо в папку с клиентским приложением. Или в любое другое место – в этом случае клиентское приложение должно как-то получить доступ к этой папке (Можно «глобально» модифицировать системную переменную PATH. Или приложение может сделать это «локально», только для данного процесса, с помощью API – функции SetEnviromentVariable)
Если нет возможности указывать клиентскую библиотеку явно (при работе с ibx, например), следует переименовать файл fbembed.dll в fbclient.dll или в gds32.dll (в соответствии с требованиями клиентского приложения).
Всё.

Нет, не все.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639708
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед завершением приложения, использующего FireBird embedded, следует вызвать функцию fb_shutdown() . Подробности: https://firebirdsql.org/file/documentation/release_notes/html/en/2_5/rnfb25-apiods-api.html

Вот так функция fb_shutdown() выглядит с точки зрания сишников:
Код: plaintext
1.
   int fb_shutdown(unsigned int timeout, const int reason);


Вот так – с точки зрения дельфистов:
Код: pascal
1.
  fb_shutdown: function(timeout: Cardinal; const reason: Integer): Integer; stdcall;



Эта функция живет в клиентской библиотеке (fbembed.dll). Приложение пред завершением должно загрузить эту библиотеку, запросить адрес функции fb_shutdown() и вызвать ее, с параметрами (0, 1). Потом выгрузить библиотеку.

Еще не все.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639709
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще не все.
Пред вызовом функции fb_shutdown() следует сохранить управляющее состояние FPU, а затем – восстановить его. Обычно клиентские библиотеки делают это самостоятельно, но в данном случае придется делать все руками.

Примерный код (Delphi):
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
procedure fbShutdown(const string aLibraryName);
var
  fbClientLibHandle: Cardinal;
  fb_shutdown: function(timeout, : Cardinal; const reason: Integer): Integer; stdcall;
  fSaved8087CW: Word;
begin
  // Деинициализация коннекта. Метод должен быть вызван перед завершением приложения
  // !!! не в секции finalization
  fSaved8087CW := Get8087CW();
  try
    fbClientLibHandle := LoadLibrary(PChar(aLibraryName));
    if fbClientLibHandle > 32 then begin
      fb_shutdown := GetProcAddress(fbClientLibHandle, 'fb_shutdown');
      if Assigned(fb_shutdown) then
        fb_shutdown(0, 1);
      FreeLibrary(fbClientLibHandle);
    end;
  finally
    Set8087CW(fSaved8087CW)
  end;
end;


Замечание . fb_shutdown() следует вызывать лишь после того, как был выполнен минимум один коннект к базе или к сервису (даже если всего лишь версию клиента запросите).
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639710
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для FB 2.5 - всё?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639717
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияНачиная с версии 2.5, FB может обеспечить совместный доступ к одному файлу БД из разных процессов .
Для работы с файлом базы по «embedded» протоколу , клиентское приложение в строке коннекта должно указать лишь путь к файлу базы.
Сам то понял что сказал?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639718
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияЭта функция живет в клиентской библиотеке (fbembed.dll). Приложение пред завершением должно загрузить эту библиотеку , запросить адрес функции fb_shutdown() и вызвать ее, с параметрами (0, 1). Потом выгрузить библиотеку.

Еще не все.

Это как? А в процессе работы библиотека не загружается?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639720
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияЕсли нет возможности указывать клиентскую библиотеку явно ( при работе с ibx, например )

Юзайте правильный ibx.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639723
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияЕсли нет возможности указывать клиентскую библиотеку явно (при работе с ibx, например), следует переименовать файл fbembed.dll в fbclient.dll или в gds32.dll (в соответствии с требованиями клиентского приложения).
Всё.

Не всё. Сам пробовал так делать? Даже fbclient не рекомендуют так создавать, есть утилита instclient для этого .
Попытался gds32.dll из fbembed.dll (Delphi 7/ IBX 7.08), не смог подключится, получаю ошибку unavailable database . Детально не разбирался откуда она.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639751
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЮзайте правильный ibx.
Не нужен, имхо, FAQ про "правильный". Нужен про такой как у всех.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639770
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FGallemarЮзайте правильный ibx.
Не нужен, имхо, FAQ про "правильный". Нужен про такой как у всех.
Про такой как все я писал выше. Не завелся.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639778
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У кого есть Delphi XE и выше? Там ibx разрешает выбрать клиентскую библиотеку или просто выбор firebird/interbase? У меня только Starter :)
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639785
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarПопытался gds32.dll из fbembed.dll (Delphi 7/ IBX 7.08), не смог подключится, получаю ошибку unavailable database . Детально не разбирался откуда она.
Если не переименовывать а скопировать то все будет хорошо
(ну по крайней мере у меня работает)
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639786
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mЕсли не переименовывать а скопировать то все будет хорошо
(ну по крайней мере у меня работает)
куда и что ты копировал?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639788
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarm7mЕсли не переименовывать а скопировать то все будет хорошо
(ну по крайней мере у меня работает)
куда и что ты копировал?
fbembed.dll в gds32.dll
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639789
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mfbembed.dll в gds32.dll
Это как?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639794
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarm7mfbembed.dll в gds32.dll
Это как?
Издеваешься :)

это copy, а не rename
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639795
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mGallemarпропущено...

Это как?
Издеваешься :)
Да нужен ты мне :)
m7mэто copy, а не rename А в чем разница?
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639796
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияПри «embedded» коннекте не требуется указывать логин или пароль . Однако №1:
добавь сюда, что в FB 2.1.x и 2.5.x без loopback можно сделать несколько(много) embedded-коннектов к одной и той же базе
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639800
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,
Эд, думаешь надо? По моему надо просить kdv закончить черновик и выложить статью. Автор топика пишет что попало, начал за здравие, кончил за упокой. Вообще уже больше интересен emb в трешке и его отличия от 2.5.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639812
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mGallemarпропущено...

Это как?
Издеваешься :)

это copy, а не rename
Получилось :) Теперь работает
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639821
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarm7mэто copy, а не rename А в чем разница?
Подозреваю в том, что рядом остаётся fbembed.dll, к которой она потом сама обращается.
...
Рейтинг: 0 / 0
FireBird embedded, совместный доступ к файлу базы
    #39639828
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpПодозреваю в том, что рядом остаётся fbembed.dll, к которой она потом сама обращается.
Нету
...
Рейтинг: 0 / 0
25 сообщений из 310, страница 1 из 13
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FireBird embedded, совместный доступ к файлу базы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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