Firebird-2.5 MODIFY RDB$PROCEDURES failed

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
Konstantin
Сообщения: 37
Зарегистрирован: 27 окт 2004, 06:01

Firebird-2.5 MODIFY RDB$PROCEDURES failed

Сообщение Konstantin » 20 фев 2011, 13:58

Firebird-2.5.0.26074-0_Win32
База charset win1251

В Ibexpert Выполняется скрипт все нормально! Проходит без ошибок.
ALTER PROCEDURE SP_WEEK_NEW(PDATE DATE)
......
exception Ex_Attention 'Пустая дата';
-- есть коменты на русском языке -- есть ли
пытаюсь тотже самый скрипт выполнить через IBEScript.dll
получаю сообщение
------- ERROR --------
This operation is not defined for system tables.
unsuccessful metadata update.
MODIFY RDB$PROCEDURES failed.
Malformed string.

при переходе с 2.1 на 2.5 делал это
- 2. SQL> input 'misc/upgrade/metadata/metadata_charset_create.sql';
- 3. SQL> select * from rdb$fix_metadata('WIN1251');
- 4. SQL> commit;

Сделал бакап базы.
При ресторе указал fix mailformed UNICODE_FSS data using charset WIN1251
Fix mailformed UNICODE_FSS metadata using charset WIN1251
Таже самое.
В Ibexpert Выполняется скрипт а через IBEScript.dll нет
(коннет в IBEScript.dll win1251 )
Проверил версии fbclient.dll Ibexpert и для IBEScript.dll одна и таже (размером 548864)
посмотрел в fileMonitor fbclient.dll берет с этой же директории.

Как избавиться от ошибки?
IBEScript.dll - тут ни причем.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Сообщение Dimitry Sibiryakov » 20 фев 2011, 14:31

Konstantin писал(а):(коннет в IBEScript.dll win1251 )
Либо это не так, либо в IBEScript.dll баг.

Konstantin
Сообщения: 37
Зарегистрирован: 27 окт 2004, 06:01

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Сообщение Konstantin » 20 фев 2011, 18:43

Разработчикам IbExpert писал.
Ответ: Почему не альтерится - я не знаю, это не ко мне вопрос и не к скриптеру.
Гранты то раздались. Ошибку возвращает Сервер.
Может все таки что с базой? Как проверить?
Вроде все работает нормально. Bacup-ресторе без ошибок.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Сообщение hvlad » 20 фев 2011, 19:37

Konstantin писал(а):при переходе с 2.1 на 2.5 делал это
- 2. SQL> input 'misc/upgrade/metadata/metadata_charset_create.sql';
- 3. SQL> select * from rdb$fix_metadata('WIN1251');
- 4. SQL> commit;
Зачем ???

Konstantin
Сообщения: 37
Зарегистрирован: 27 окт 2004, 06:01

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Сообщение Konstantin » 21 фев 2011, 15:22

hvlad писал(а):hvlad
Это уже начал делать эксперименты.
Сделал бакап в 2.1 востановил без rdb$fix_metadata.
Тоже самое в Ibexpert выполняются все скрипты
через IBEScript.dll не проходит....

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Сообщение hvlad » 21 фев 2011, 15:53

Konstantin писал(а):Это уже начал делать эксперименты.
Не надо делать такие эксперименты. Нужно просто использовать -fix_fss_XXX
Для выяснения отличий IBE от IBEScript можно воспользоваться, например, трейсом...

Konstantin
Сообщения: 37
Зарегистрирован: 27 окт 2004, 06:01

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Сообщение Konstantin » 22 фев 2011, 15:59

Код: Выделить всё

select cast(12 as integer),  cast(rdb$field_length as varchar(64)), cast(' ' as
varchar(64)) from rdb$fields
where (rdb$field_name = 'RDB$MESSAGE')
union 
...
длинный запрос
2011-02-22T18:47:17.6870 (708:014FC254) EXECUTE_STATEMENT_FINISH
        C:\TMP\test.FDB (ATT_23, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
        E:\Update.exe:2588
                (TRA_717, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
Statement 589:
2011-02-22T18:47:17.6870 (708:014FC254) COMMIT_TRANSACTION
        C:\TMP\test.FDB (ATT_23, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
        E:\Update.exe:2588                (TRA_717, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
      0 ms, 1 write(s), 1 fetch(es), 1 mark(s)

2011-02-22T18:47:17.6870 (708:014FC254) START_TRANSACTION
        C:\TMP\test.FDB (ATT_23, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
        E:\Update.exe:2588          (TRA_718, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)

2011-02-22T18:47:17.6870 (708:014FC254) EXECUTE_STATEMENT_START
        C:\TMP\test.FDB (ATT_23, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
        E:\Update.exe:2588                (TRA_718, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
-------------------------------------------------------------------------------
create or alter procedure SP_WEEK_NEW (
Дальше весь текст процедуры

Код: Выделить всё

вконце
2011-02-22T18:47:17.7030 (708:014FC254) [b]FAILED EXECUTE_STATEMENT_FINISH[/b]
        C:\TMP\test.FDB (ATT_23, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
        E:\Update.exe:2588                (TRA_718, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
-------------------------------------------------------------------------------
create or alter procedure SP_WEEK_NEW (
опять текст процедуры
В конце такое

Код: Выделить всё

0 records fetched
      0 ms

2011-02-22T18:47:17.7030 (708:014FC254) ROLLBACK_TRANSACTION
        C:\TMP\test.FDB (ATT_23, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
        E:\Update.exe:2588                (TRA_718, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
      0 ms, 4 write(s), 1 fetch(es), 1 mark(s)

2011-02-22T18:47:17.7030 (708:014FC254) DETACH_DATABASE
        C:\TMP\test.FDB (ATT_23, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
        E:\Update.exe:2588

2011-02-22T18:47:17.7030 (708:014FC254) TRACE_FINI     SESSION_5 my_trace
Запускаю так
fbtracemgr.exe -USER SYSDBA -PASS masterkey -SE service_mgr -START -NAME my_trace -CONFIG fbtrace_02.conf

fbtrace_02.conf

Код: Выделить всё

<database C:\TMP\test.FDB >
        enabled true
        log_filename C:\1.log
        log_connections true
        log_transactions true
        log_statement_start true
        log_statement_finish true
        log_statement_start true
        time_threshold 0
        max_sql_length 64000
        max_arg_length 64000
        max_arg_count 90
</database>
C:\1.log почему то не создается.

Konstantin
Сообщения: 37
Зарегистрирован: 27 окт 2004, 06:01

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Сообщение Konstantin » 22 фев 2011, 16:10

В IbExperte
начало нет в командной строке, а лог почему то не создается.

Код: Выделить всё

концовка процедуры
  suspend;
end

2011-02-22T19:05:01.4530 (708:014FC318) EXECUTE_STATEMENT_FINISH
        C:\TMP\test.FDB (ATT_24, SYSDBA:NONE, WIN1251, TCPv4:127.0.0.1)
        D:\DB\FB\HK-Software\IBExpert\ibexpert.exe:2308                (TRA_771, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
-------------------------------------------------------------------------------
CREATE OR ALTER procedure SP_WEEK_NEW (
дальше опять весь текст процедуры

Код: Выделить всё

0 records fetched
      0 ms

2011-02-22T19:05:01.4680 (708:014FC318) EXECUTE_STATEMENT_START
        C:\TMP\test.FDB (ATT_24, SYSDBA:NONE, WIN1251, TCPv4:127.0.0.1)
        D:\DB\FB\HK-Software\IBExpert\ibexpert.exe:2308         (TRA_771, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
-------------------------------------------------------------------------------
GRANT EXECUTE ON PROCEDURE SP_WEEK_GET_DATE TO PROCEDURE SP_WEEK_NEW
2011-02-22T19:05:01.4680 (708:014FC318) EXECUTE_STATEMENT_FINISH
        C:\TMP\test.FDB (ATT_24, SYSDBA:NONE, WIN1251, TCPv4:127.0.0.1)
        D:\DB\FB\HK-Software\IBExpert\ibexpert.exe:2308      (TRA_771, READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE)
Дальше идут раздачи грантов.

Текс процедуры передается одинаковый. разница только в окончание
в первом случае FAILED EXECUTE_STATEMENT_FINISH
(ATT_23, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
во втором EXECUTE_STATEMENT_FINISH
(ATT_24, SYSDBA: NONE, WIN1251, TCPv4:127.0.0.1)
Похоже не передалось WIN1251.
хотя в начале скрипта стоит

Код: Выделить всё

SET NAMES WIN1251;
SET TERM ^ ;
И в с троке коннекта к длл указывается c_ctype=WIN1251;

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Сообщение hvlad » 22 фев 2011, 17:06

Konstantin писал(а): Текс процедуры передается одинаковый. разница только в окончание
в первом случае FAILED EXECUTE_STATEMENT_FINISH
(ATT_23, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)
во втором EXECUTE_STATEMENT_FINISH
(ATT_24, SYSDBA: NONE, WIN1251, TCPv4:127.0.0.1)
Похоже не передалось WIN1251.
Именно

Konstantin писал(а):хотя в начале скрипта стоит

Код: Выделить всё

SET NAMES WIN1251;
SET TERM ^ ;
И в с троке коннекта к длл указывается c_ctype=WIN1251;
Коннект к длл ?
c_ctype ?

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Сообщение hvlad » 22 фев 2011, 17:09

Konstantin писал(а):Запускаю так
fbtracemgr.exe -USER SYSDBA -PASS masterkey -SE service_mgr -START -NAME my_trace -CONFIG fbtrace_02.conf
Это интерактивная трейс-сессия. Она получает результаты от сервиса и выдаёт тебе на экран.
Konstantin писал(а):fbtrace_02.conf

Код: Выделить всё

<database C:\TMP\test.FDB >
        enabled true
        log_filename C:\1.log
        log_connections true
        log_transactions true
        log_statement_start true
        log_statement_finish true
        log_statement_start true
        time_threshold 0
        max_sql_length 64000
        max_arg_length 64000
        max_arg_count 90
</database>
C:\1.log почему то не создается.
Потому что см выше.
log_filename используется только аудитом.
Документацию читать когда будем ? :)

Konstantin
Сообщения: 37
Зарегистрирован: 27 окт 2004, 06:01

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Сообщение Konstantin » 23 фев 2011, 08:23

Действительно пропустил букву в lc_ctype=WIN1251; :roll: :roll: :roll:
В этом все проблема.
log_filename используется только аудитом.
если бы он был назван log_audit_filename
я посмотрел лог - значит лог....
В командную строку все сыпет и начало пропадает ....
Если ничего не получается - уже тогда читают инстукции и документации.. :)

Вопрос закрыт. Всем спасибо....

Ответить