Подключение из нескольких приложений к одной базе данных firebird через встроенную библиотеку dll



Я относительно новичок в программировании баз данных. Я использую firebird 2.5 с IBPP. У меня есть по крайней мере два приложения, использующие базу данных sampe firebird. Я хочу подключиться к встроенному варианту (fbembedded.проблемы, icudt30.проблемы, icuc30.dll), так как это будет хост-приложение на компьютерах клиентов. Я написал простое тестовое приложение для чтения данных из базы данных и запустил это приложение три раза одновременно. Все работало.



Но теперь я не Шур, если это работает всегда и если это работает стабильно без опасности повреждения данных. Потому что, когда у меня есть соединение с базой данных с помощью средства просмотра ibexpert, мое тестовое приложение не может подключиться к базе данных. Кроме того, документация sais (firebirdEmbedded):




Вы можете иметь несколько встроенных серверов, работающих одновременно, и
вы можете иметь несколько приложений, подключающихся к одному встроенному серверу.
Наличие обычного сервера, уже работающего, также не является проблемой.
однако, встроенный сервер блокирует файл базы данных для собственного использования.
эксклюзивное использование после успешного подключения. Это означает, что вы не можете
доступ к одной и той же базе данных из нескольких встроенных серверных процессов
одновременно (или с любого другого сервера, как только встроенный сервер имеет
заблокировал файл).




То документацию, правильно? Мой пример приложения, кажется, показывает обратное. У меня был суперсервер firebird, установленный на моем компьютере некоторое время назад, но удалил его перед тестированием.

727   1  

1 ответ:

Документ, на который вы ссылаетесь, основан на Firebird 2.0 или 2.1. "Серверная" архитектура Firebird, внедренная в Windows, была изменена в Firebird 2.5. До Firebird 2.5 Firebird Embedded в Windows вел себя как суперсервер, то есть требовал эксклюзивного доступа к файлу базы данных.

Начиная с Firebird 2.5, Firebird Embedded в Windows ведет себя как модель SuperClassic server, что означает, что он использует общий доступ к файлам базы данных и что к той же базе данных можно получить доступ. несколькими встроенными приложениями Firebird и серверами Firebird в классической или Суперклассической модели сервера (но не Суперсервера), если они работают на одной машине. Недостатком этого изменения является то, что встроенные приложения должны иметь возможность создавать, читать и записывать файлы блокировки общих баз данных (в C:\ProgramData\Firebird).

Вам не нужно беспокоиться о повреждении: если встроенный движок не может получить доступ к общему файлу блокировки, соединение будет прервано. Причина, по которой ты не можешь подключение к IB Expert, вероятно, заключается в том, что вы пытаетесь подключиться через сервер Firebird с моделью SuperServer (которая требует эксклюзивного доступа).

Смотрите также примечания к релизу Firebird 2.5: изменения в движке Firebird :

Встроенный сервер в библиотеке Windows, fbembed.dll , теперь использует Superclassic, а не Superserver, как раньше, таким образом, объединяя свою модель с моделью локального соединения с Superclassic на POSIX. Файл базы данных-блокировка, что ранее ограниченные соединения с одним прикладным пространством заменяются глобальной таблицей блокировки, которая позволяет одновременно получать доступ к одной и той же базе данных из разных встроенных серверных модулей. Это облегчает одновременную отладку приложений и использование собственных утилит, таких как gbak, gstat и так далее.

Comments

    Ничего не найдено.