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

Firebird-2.5 MODIFY RDB$PROCEDURES failed

Добавлено: 20 фев 2011, 13:58
Konstantin
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 - тут ни причем.

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Добавлено: 20 фев 2011, 14:31
Dimitry Sibiryakov
Konstantin писал(а):(коннет в IBEScript.dll win1251 )
Либо это не так, либо в IBEScript.dll баг.

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

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

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Добавлено: 20 фев 2011, 19:37
hvlad
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;
Зачем ???

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

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

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

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

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Добавлено: 22 фев 2011, 15:59
Konstantin

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

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 почему то не создается.

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Добавлено: 22 фев 2011, 16:10
Konstantin
В 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;

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Добавлено: 22 фев 2011, 17:06
hvlad
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 ?

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

Добавлено: 22 фев 2011, 17:09
hvlad
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 используется только аудитом.
Документацию читать когда будем ? :)

Re: Firebird-2.5 MODIFY RDB$PROCEDURES failed

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

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