Встроенная редакция базы данных открывает файлы базы данных в монопольном режиме (DenyRead, DenyWrite), серверная редакция делает то же самое.
Это по замыслу , нет никакого способа координации между двумя различными процессами базы данных, чтобы позволить открыть этот файл и успешно выполнять операции чтения / записи в параллельной среде. Если вы хотите разрешить различным процессам доступ к базе данных, вы должны сделать это, подключившись к серверной версии продукта Firebird.
Это верно и для вашей среды разработки . Если вы подключаете свою IDE к базе данных с помощью встроенного, а затем выполняете свое приложение с использованием также встроенного, приложение получит ошибку отказа в доступе, потому что файл будет открыт в IDE. Как вы, возможно, знаете, IDE и ваше приложение на самом деле являются разными процессами.
Другой возможный сценарий - это когда вы работаете с этой базой данных из FlameRobin или любым другим инструментом (используя версию сервера или встроенную версию), а затем пытаетесь открыть соединение из IDE, используя встроенную версию.
Из-за этого использование встроенной версии в среде разработки - плохая идея .
Я всегда использую там локальный сервер . Таким образом, я могу подключить свои инструменты базы данных IDE к базе данных (редко, но иногда я делаю это), любой другой инструмент, такой как isql, IBExpert, FlameRobin, я могу поддерживать открытые соединения из своего проекта и без проблем запускать тестирование / отладку .
Затем, если приложение будет использовать встроенную версию в рабочей среде, Я переключаюсь на эту версию во время фазы тестирования / вопросов и ответов и, конечно, в рабочей .
Я не использую Firebird из Visual Studio или .NET, поэтому я не уверен, что означает параметр Server Type: Embedded
или как драйвер выбирает между сервером и встроенным, но что бы это ни было, вы должны изменяйте его только в своих выпусках, при использовании сервера в отладочных версиях.
Теперь, Я должен признаться, , я лежу в начале этого ответа, фактически используя классический сервер, есть несколько процессов (по одному для каждого подключенного клиента), обращающихся к базе данных. Я не уверен, как они разделяют доступ к этому файлу между различными процессами (может быть, есть процесс чтения / записи, я не знаю, и, на данный момент, мне действительно все равно), это другая история и не меняется что я говорю раньше.