!!! Смяна на Firebird сървъра с версия 2.1

Въпроси, мнения и предложения свързани с модула.

Модератори: detelin, mIRCata

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

!!! Смяна на Firebird сървъра с версия 2.1

Мнение от mIRCata » 15-05-2008 12:34

Започнете смяната на Firebird сървърите с версия 2.1.
Започваме да вграждаме в програмата, неща които ще вървят само под 2.1. И е добре когато ги пуснем сървъра да е сменен, за да няма неприятни изненади при конвертиране на базата или при самата и работа.
На сървъра в common съм качил инсталатор за Windows.

И да не забравите да преместите fb_udf_tools.dll в директорията на новата инсталация.

За да се възползвате от пълните възможности на версия 2.1 трябва да се направи backup/restore(b/r за по-кратко) на базата. Но!
Във документацията на Firebird 2.1 казват, че в предишните версии са имали неточност в работата с различните character sets в meta даннните при b/r. Затова преди да пуснете b/r трябва да се изпълни следния скрипт (само един път, при втори вече ще дава грешка) :

Код: Избери всички

set term !;

create or alter procedure rdb$fix_metadata
    (charset varchar(31) character set ascii)
returns
    (table_name char(31) character set unicode_fss,
     field_name char(31) character set unicode_fss,
     name1 char(31) character set unicode_fss,
     name2 char(31) character set unicode_fss)
as
    declare variable system integer;
    declare variable field1 char(31) character set unicode_fss;
    declare variable field2 char(31) character set unicode_fss;
    declare variable has_records integer;
begin
    for select rf.rdb$relation_name, rf.rdb$field_name,
               (select 1 from rdb$relation_fields
                   where rdb$relation_name = rf.rdb$relation_name and
                         rdb$field_name = 'RDB$SYSTEM_FLAG'),
               case rdb$relation_name
                   when 'RDB$CHARACTER_SETS' then 'RDB$CHARACTER_SET_NAME'
                   when 'RDB$COLLATIONS' then 'RDB$COLLATION_NAME'
                   when 'RDB$EXCEPTIONS' then 'RDB$EXCEPTION_NAME'
                   when 'RDB$FIELDS' then 'RDB$FIELD_NAME'
                   when 'RDB$FILTERS' then 'RDB$INPUT_SUB_TYPE'
                   when 'RDB$FUNCTIONS' then 'RDB$FUNCTION_NAME'
                   when 'RDB$GENERATORS' then 'RDB$GENERATOR_NAME'
                   when 'RDB$INDICES' then 'RDB$INDEX_NAME'
                   when 'RDB$PROCEDURES' then 'RDB$PROCEDURE_NAME'
                   when 'RDB$PROCEDURE_PARAMETERS' then 'RDB$PROCEDURE_NAME'
                   when 'RDB$RELATIONS' then 'RDB$RELATION_NAME'
                   when 'RDB$RELATION_FIELDS' then 'RDB$RELATION_NAME'
                   when 'RDB$ROLES' then 'RDB$ROLE_NAME'
                   when 'RDB$TRIGGERS' then 'RDB$TRIGGER_NAME'
                   else NULL
               end,
               case rdb$relation_name
                   when 'RDB$FILTERS' then 'RDB$OUTPUT_SUB_TYPE'
                   when 'RDB$PROCEDURE_PARAMETERS' then 'RDB$PARAMETER_NAME'
                   when 'RDB$RELATION_FIELDS' then 'RDB$FIELD_NAME'
                   else NULL
               end
            from rdb$relation_fields rf
            join rdb$fields f
                on (rf.rdb$field_source = f.rdb$field_name)
            where f.rdb$field_type = 261 and f.rdb$field_sub_type = 1 and
                  f.rdb$field_name <> 'RDB$SPECIFIC_ATTRIBUTES' and
                  rf.rdb$relation_name starting with 'RDB$'
            order by rf.rdb$relation_name
        into :table_name, :field_name, :system, :field1, :field2
    do
    begin
        name1 = null;
        name2 = null;

        if (field1 is null and field2 is null) then
        begin
            has_records = null;

            execute statement
                'select first 1 1 from ' || table_name ||
                '    where ' || field_name || ' is not null' ||
                iif(system = 1, ' and coalesce(rdb$system_flag, 0) in (0, 3)', '')
                into :has_records;

            if (has_records = 1) then
            begin
                suspend;

                execute statement
                    'update ' || table_name || ' set ' || field_name || ' = ' ||
                    '    cast(cast(' || field_name || ' as blob sub_type text character set none) as ' ||
                    '        blob sub_type text character set ' || charset || ') ' ||
                    iif(system = 1, 'where coalesce(rdb$system_flag, 0) in (0, 3)', '');
            end
        end
        else
        begin
            for execute statement
                    'select ' || field1 || ', ' || coalesce(field2, ' null') || ' from ' || table_name ||
                    '    where ' || field_name || ' is not null' ||
                    iif(system = 1, ' and coalesce(rdb$system_flag, 0) in (0, 3)', '')
                into :name1, :name2
            do
            begin
                suspend;

                execute statement
                    'update ' || table_name || ' set ' || field_name || ' = ' ||
                    '    cast(cast(' || field_name || ' as blob sub_type text character set none) as ' ||
                    '        blob sub_type text character set ' || charset || ') ' ||
                    '    where ' || field1 || ' = ''' || name1 || '''' ||
                    iif(name2 is null, '', ' and ' || field2 || ' = ''' || name2 || '''');
            end
        end
    end
end!

commit!

select * from rdb$fix_metadata('WIN1251')!

commit!

drop procedure rdb$fix_metadata!

commit!

Няма да го слагаме в конверт на базата, защото не се знае след като е минал, дали с базата не е правен нов b/r със стара версия на Firebird, което най-вероятно ще е довело до същия проблем, който този скрипт оправя и така ще се загуби целия смисъл от пускането му.
Скрипта сваляте от тук

atomik
Мнения: 143
Регистриран: 06-12-2006 17:33
Име: Калин Анастасов

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от atomik » 15-05-2008 13:27

В common на сървъра не виждам инсталатора

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от mIRCata » 15-05-2008 13:31

atomik написа:В common на сървъра не виждам инсталатора
Там е, там е.

Потребителски аватар
stoar08
Мнения: 1548
Регистриран: 09-11-2004 08:15
Име: Стоян Арабаджиев
Местоположение: Самоков

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от stoar08 » 15-05-2008 13:43

http://intelrullz.data.bg/Firebird-2.1. ... _Win32.exe


И си правете "defragment" (backup/restore) на базите, особено ако идват от версия на firebird, по-малка от 2. Има неща, които не вървят на ODS 10 (дали се ползват или не е друга тема, но лично на мен не ми се струва оправдан експеримента).
От 2.0.3 към 11.1 не е тооолкова фатално, но пак не е лошо да се направи.
Моля ви, като прочетете тема пишете по едно мнение да не ви търся по icq/телефон после ...

kondev
Site Admin
Мнения: 2187
Регистриран: 02-11-2004 17:23
Име: Петър Кондев
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от kondev » 15-05-2008 15:46

mIRCata написа:
atomik написа:В common на сървъра не виждам инсталатора
Там е, там е.
По-убедително от двойното "там е", щеше да е линк ;)
Преструвай се на умен - мълчи по-често!

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от mIRCata » 16-05-2008 09:11

Редакция на първото мнение.

Потребителски аватар
stoar08
Мнения: 1548
Регистриран: 09-11-2004 08:15
Име: Стоян Арабаджиев
Местоположение: Самоков

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от stoar08 » 16-05-2008 09:41

Това предупреждение и аз го забелязах, но не разбрах точно какво не им е ок на метаданните ... забелязах само разлика в поведението на новия и стария gbak.exe (стария така и не разчете имената на операциите,но до момента Aton не е дал грешки при работа).
Да се подготвям ли психически да пиша нова база ?:)
Моля ви, като прочетете тема пишете по едно мнение да не ви търся по icq/телефон после ...

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от radoslav.radulov » 20-05-2008 09:27

Това за(от) коя версия на Aton се отнася?
Не ПРОБВАЙ това в къщи.
Изображение

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от mIRCata » 20-05-2008 09:57

Предварително няма как да ти кажа, в коя версия ще се вградят неща от 2.1.
Заова пуснах тази тема, за да се подготвят нещата предварително, да няма неприятни изненади при някой ъпдейт, който уж трябва да стане бързо, а да се появят усложнения и непредвидено спиране работата на обекта.

radoslav.radulov
Мнения: 113
Регистриран: 04-04-2007 10:08

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от radoslav.radulov » 20-05-2008 15:56

Това ще рече ли да дейсваме на този етап и с тези версии на Aton с които разполагаме?
Не ПРОБВАЙ това в къщи.
Изображение

Потребителски аватар
stoar08
Мнения: 1548
Регистриран: 09-11-2004 08:15
Име: Стоян Арабаджиев
Местоположение: Самоков

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от stoar08 » 25-05-2008 22:18

Скрипта ми даде грешки и на двете бази, на които реших да го пробвам, поради което реших да прочета release notes.
The procedure involves multiple passes through the database, using scripts. It is strongly recommended that
you disconnect and reconnect before each pass.
The database should already have been converted to ODS11.1 by way of a gbak backup and restore.
Before doing anything, make a copy of the database.
Това поне аз го разбирам като "трябва вече да сте преминали през b/r цикъл". Интересното е, че и 11.0 и 11.1 ми гърмят при изпълнение на скрипта, за което не намерих логично обяснение. В същото време имам база, на която се изпълнява неограничен брой пъти без да "гръмне" ...

Би ли трябвало да ме притесняват двете бази, на които скрипа не се изпълни успешно (и 2те бяха с ODS 11.0).
Моля ви, като прочетете тема пишете по едно мнение да не ви търся по icq/телефон после ...

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от mIRCata » 26-05-2008 14:33

В документацията на Firebird там където са скриптовете има един друг, с който се "тества" доколко базата има проблем с тия кодировки. Там казват, че като се пусне със select там където гръмне излиза като последен ред от резултатите. Вземи пусни описаната там процедура и заявка и виж къде ти гръмва. Да не е нещо правено допълнително към базата и там да гърми. По принцип даваха, че може да има проблем, когато има полета с различна кодировка - поне аз така го разбрах.
Иначе за скрипта съм го изпълнявал и преди да направя b/r на бази с ODS 10.1 и не съм имал проблеми.

Потребителски аватар
stoar08
Мнения: 1548
Регистриран: 09-11-2004 08:15
Име: Стоян Арабаджиев
Местоположение: Самоков

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от stoar08 » 27-05-2008 08:19

Ами ще опитам ... но едната база е служебната ми на Aton, другата на 1 клиент. Опитах и с базата, с която идват последните инсталации (и тя гърми, а предполагам, че кодировките в нея са оправени), но ми е странно защо 1 база "върти" скрипта безкрайно, а друга не може да го изпълни дори веднъж. Естествено всички тестове са при FB 2.1.
Ще пиша пак когато ми остане време да го проверя.
Моля ви, като прочетете тема пишете по едно мнение да не ви търся по icq/телефон после ...

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от mIRCata » 27-05-2008 16:43

Редакция на първото мнение.

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от mIRCata » 04-06-2008 10:18

Излезе, че начина, по който променяхме броя знаци в цените, в същност е било бъг на Firebird и той е оправен във версия 2.1. Във версии на Атон след 1.2.918.742 вече става по нов начин и не би трябвало да има проблеми. И на преминаването към 2.1

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от mIRCata » 20-07-2008 10:15

Сървъра ни вече е на версия 2.1.1

rad
Мнения: 663
Регистриран: 12-11-2004 10:48
Име: инж. Рад Площаков
Местоположение: Варна, България
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от rad » 21-07-2008 10:49

mIRCata написа:Сървъра ни вече е на версия 2.1.1
това ще рече, че
-1."вътрешния" Атон на ЪнриълСофт е на 2.1.1
-2.трябва да сменяме по клиенти, за да нямаме проблеми ?

:roll:
Изображение

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от mIRCata » 21-07-2008 11:52

rad написа:
mIRCata написа:Сървъра ни вече е на версия 2.1.1
това ще рече, че
-1."вътрешния" Атон на ЪнриълСофт е на 2.1.1
-2.трябва да сменяме по клиенти, за да нямаме проблеми ?

:roll:
1 Да
2. За смяната - то една от целите на тази тема, като цяло беше да се предупреди, че наближава преминаването към 2.1 и да може обектите плавно - по време на профилактики и т.н постепенно да минат към тази версия. Така ако в един момент започнем да използваме нещо, което налага задължителна смяна на версията - да не ви се натрупа наведнъж на сума места. А така като има гратисен период спокойно и в удобно време да се смени.

detelin
Мнения: 766
Регистриран: 09-11-2004 19:52
Име: Детелин Илиев
Местоположение: Несебър
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от detelin » 28-07-2008 17:42

А линк към 2.1.1?
И от коя версия ще е вече задължителен?

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от mIRCata » 29-07-2008 08:10

Че линка горе е за 2.1.1

detelin
Мнения: 766
Регистриран: 09-11-2004 19:52
Име: Детелин Илиев
Местоположение: Несебър
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от detelin » 29-07-2008 10:08

Ами като си редактираш мненията поне си оправи "верися"-та....
Сигурно така си коригираш и линковете, поне като гледам е добавен 15-тина минути преди поста ми в common директорията :evil:

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от mIRCata » 29-07-2008 11:03

detelin написа:Ами като си редактираш мненията поне си оправи "верися"-та....
Сигурно така си коригираш и линковете, поне като гледам е добавен 15-тина минути преди поста ми в common директорията :evil:
Версията на кое? Firebirda си е 2.1. 2.5 все още е във alpha версия, така, че скоро няма да минаваме на него.
Файла беше сложен повече от час преди твоето мнение.
Пък последна версия на firebird sql server, винаги може да се свали от сайта им, нали?

detelin
Мнения: 766
Регистриран: 09-11-2004 19:52
Име: Детелин Илиев
Местоположение: Несебър
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от detelin » 29-07-2008 11:11

За корекцията на "верися" просто имах предвид реда на буквите :wink:

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с верися 2.1

Мнение от mIRCata » 29-07-2008 11:13

detelin написа:За корекцията на "верися" просто имах предвид реда на буквите :wink:
Дидчоо .....

Потребителски аватар
mIRCata
Admin
Мнения: 1065
Регистриран: 15-11-2004 15:25
Име: инж. Мирослав Джоров
Местоположение: Тайна майна
Контакти:

Re: !!! Смяна на Firebird сървъра с версия 2.1

Мнение от mIRCata » 05-12-2008 11:02

Новите промени по базата данни, които подготвяме свързани с реорганизирането на работата с партиди ще работят само на 2.1 и по нови версии на Firebird. Добре е където още не са сменени сървърите и конвертирани базите да го направите.
http://www.unrealsoft.bg/forum/viewtopi ... =45&t=2775 - тук сме обсъждали някои настройки на Firebird за по-добра работа.

Отговори