|
Запись в базу Firebird
|
|||
---|---|---|---|
#18+
Приветствую всех Гуру. Написал программу под Windows работающую локально с базой на Firebird (файл FDB). Программа ничего не записывает в базу а только берёт оттуда данные (только чтение). Сервер Firebird на компьютер не установлен, все необходимые для работы Firebird файлы лежат в папке с программой. Возникла необходимость записать данную программу на DVD диск и запускать с диска. При работе с диска при запуске программы и как я понял в любой момент обращения к базе появляется ошибка "no permission for read-write access to database OTTEST.FDB". К слову сказать если посмотреть на работу программы, расположенной на жёстком диске, видно, что при работе программы обновляется и файл базы .FDB, а на диске обновить файл невозможно. Отсюда вопросы: 1) Почему обновляется файл базы FDB если в программе происходит только чтение? 2) Как можно обойти эту перезапись? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2019, 20:37 |
|
Запись в базу Firebird
|
|||
---|---|---|---|
#18+
Gamlex, gfix -mode read_only my_employee ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2019, 20:44 |
|
Запись в базу Firebird
|
|||
---|---|---|---|
#18+
Gamlex, Денис ответил. А почему так - даже если идут только чтения из БД, чтения производятся в транзакции, а старт транзакции - это как минимум изменение header page базы данных, а завершение - изменение ее состояния в transaction inventory page. Режим read-only у базы (не у файла) отрубает указанные выше операции. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2019, 20:48 |
|
Запись в базу Firebird
|
|||
---|---|---|---|
#18+
Благодарю за быстрый ответ. Да, это сработало. Но вот в чём загвоздка. Программа имеет администраторскую и клиентскую версию. Администратор делает правки в базе. А клиент только читает данные из этой базы. Клиентская версия записана на диске. Если я сделаю базу только для чтения, администратор не сможет делать правки в базе. Конечно можно сделать правки администратором, скопировать базу в другую папку, командой c gfix установить признак Read_Only, но тут слишком много действий. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2019, 22:05 |
|
Запись в базу Firebird
|
|||
---|---|---|---|
#18+
Программа сделана на Delphi. Используются компоненты TIBDataBase и TIBTransaction. В TIBTransaction задаются параметры типа: concurrency read_committed rec_version nowait read consistency write Так же есть галочка Read Only. Однако установка этих параметров не помогает - база всёравно обновляется (если не делать команду с gfix). Может кто знает, можно ли настроить клиентскую версию программы (компоненты в ней) так, чтобы файл базы не обновлялся при чтении? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2019, 22:09 |
|
Запись в базу Firebird
|
|||
---|---|---|---|
#18+
GamlexКлиентская версия записана на диске. Если я сделаю базу только для чтения, администратор не сможет делать правки в базе. Так ты ставь режим read only только непосредственно перед записью на DVD. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2019, 22:30 |
|
Запись в базу Firebird
|
|||
---|---|---|---|
#18+
Я то без проблем поставил бы. Пользователь административной версии - обычный юзер. Firebird у него не установлен. Про команды в командной строке он ничего не слышал. Ему нужно чтобы в административной версии подправил базу, кинул её в клиентскую версию, записал на диск и чтобы всё работало. Поэтому я и хотел бы узнать, можно ли сделать это изменение в самой Делфе. Можно было бы в программе или CMD файле запускать эту команду для клиентской версии, чтобы пользователь-админ сам ничего не делал. Для этого скидывал в папку с CMD файлом файлы gfix.exe и fbclient.dll, но без установленного Firebird команда не проходит - пишет Unavailable database. Если других решений нет - придётся мне ему ставить Firebird и учить перед записью на диск запускать CMD для перевода базы в read_only. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2019, 22:48 |
|
Запись в базу Firebird
|
|||
---|---|---|---|
#18+
Gamlex, господи... есть Services API http://www.ibase.ru/ibx#servapi unavailable database выдается если идет попытка коннекта к базе НЕ через embedded, и т.д. GamlexТак же есть галочка Read Only. Однако установка этих параметров не помогает да потому что это параметр транзакции, которая стартует в read-write базе данных. Я же популярно объяснил, что происходит при старте и завершении транзакций, любых, до тех пор пока БАЗА не переведена в read-only. А с админкой и клиентсккой версией - уж чего проще. Админ в RW поменял, потом программа переводит базу в RO, пишет на диск, и обратно исходную БД переводит в RW. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2019, 23:32 |
|
|
start [/forum/topic.php?fid=40&fpage=24&tid=1560755]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 143ms |
0 / 0 |