Страница 1 из 1

Как из процедуры узнать что БД находится в режиме ReadOnly?

Добавлено: 06 апр 2011, 18:42
ThreeDHead
Т.е. если БД в режиме только для чтения, то не делать такие-то операции.

Firebird 2.1.1 (Windows Build)

Re: Как из процедуры узнать что БД находится в режиме ReadOn

Добавлено: 07 апр 2011, 21:42
kdv
из процедуры - никак. узнать что база в read-only можно только с клиента. gstat -h, сотв. вызов Services API, или (вроде) TIBDatabaseInfo.

Re: Как из процедуры узнать что БД находится в режиме ReadOn

Добавлено: 08 апр 2011, 08:38
ThreeDHead
kdv писал(а):из процедуры - никак. узнать что база в read-only можно только с клиента. gstat -h, сотв. вызов Services API, или (вроде) TIBDatabaseInfo.
Спасибо за ответ.

Но решение всё-таки нашел - создать таблицу DBMODE, в ней установить в поле READONLY = 1, _перед_ переводом БД в ReadOnly. А из процедуры уже осуществлять проверку по этой таблице и полю.
Вообще то я думал что из системных таблиц можно эту инфу взять.

Re: Как из процедуры узнать что БД находится в режиме ReadOn

Добавлено: 08 апр 2011, 14:26
Dimitry Sibiryakov
А MON$DATABASE.MON$READ_ONLY не оно?..

Re: Как из процедуры узнать что БД находится в режиме ReadOn

Добавлено: 08 апр 2011, 15:25
ThreeDHead
Dimitry Sibiryakov писал(а):А MON$DATABASE.MON$READ_ONLY не оно?..
Во, классно, оно. То, чего и искал.
Спасибо.
select MON$READ_ONLY from MON$DATABASE

Re: Как из процедуры узнать что БД находится в режиме ReadOn

Добавлено: 08 апр 2011, 17:45
kdv
склероз, извиняюсь. в уме вычисляю наименьший общий знаменатель для всех версий ФБ.

Re: Как из процедуры узнать что БД находится в режиме ReadOn

Добавлено: 09 апр 2011, 14:45
Dimitry Sibiryakov
ThreeDHead писал(а):То, чего и искал.
Сразу возникает резонный вопрос: а где же ты, собственно, искал-то?..