Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз? / 16 сообщений из 16, страница 1 из 1
26.02.2016, 17:24
    #39180073
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
Добрый день!

В базе куча процедур были созданы с чарсетом UTF8 и дефолтным (для UTF8) collation. Теперь этот коллейт надо поменять на другой (собственноручно-созданный) или сбросить на умолчательный для БД.
Полей много, процедур много, баз много. Как бы это дело автоматизировать?

п.с. пробовал обновлять rdb$fields.rdb$collation_id - помогает только до первого recompile.
...
Рейтинг: 0 / 0
26.02.2016, 17:30
    #39180079
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
deboseКак бы это дело автоматизировать?
Любой текстовый редактор умеет массовый Search&Replace. Правишь образцово-показательный
скрипт, создаёшь новую БД, переливаешь данные из старой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.02.2016, 17:34
    #39180085
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
debose,

Код: plaintext
1.
ALTER CHARACTER SET UTF8
SET DEFAULT COLLATION collation;

и перекомпилировать все ХП. Для полей ХЗ как. Наверное надо написать анонимный блок и в нём использовать EXECUTE STATEMENT
...
Рейтинг: 0 / 0
26.02.2016, 17:34
    #39180086
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
Dimitry Sibiryakov, а без пересоздания всех SP никак?
...
Рейтинг: 0 / 0
26.02.2016, 17:56
    #39180105
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
deboseа без пересоздания всех SP никак?
"Ошибки надо смывать. Кровью!" (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.02.2016, 19:16
    #39180169
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
Симонов Денисdebose,

Код: plaintext
1.
ALTER CHARACTER SET UTF8
SET DEFAULT COLLATION collation;


Да, спасибо.
Дефолтный COLLATION там был другой (UTF8).
...
Рейтинг: 0 / 0
26.02.2016, 19:19
    #39180172
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
А можно как-то пересоздать все процедуры в скрипте внутри самой БД? параллельно сбросив старый дефолтный COLLATION - а то IbExpert например после изменения DEFAULT COLLATIOn в исходниках процедур теперь явно показывает старый(UTF8) collation..
...
Рейтинг: 0 / 0
26.02.2016, 20:35
    #39180232
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
deboseА можно как-то пересоздать все процедуры в скрипте внутри самой БД?
теоретически - можно, через генерируемый ES, но думаю, что это гораздо геморройнее чем
экспорт метаданных (isql -x ...
вырезание триггеров и процедур из скрипта (пол-скрипта просто отрезать)
изменение collate
применение модифицированного скрипта.

debose IbExpert например после изменения DEFAULT COLLATIOn в исходниках процедур теперь явно показывает старый(UTF8) collation..
склероз? дефолтный чарсет (и коллэйт) БД применяется ТОЛЬКО ДЛЯ НОВЫХ объектов, которые не имеют явно указанного чарсета или коллэйта. Для всех существующих объектов изменение дефолтного чарсета (и коллэйта) БД не имеет никакого значения.
...
Рейтинг: 0 / 0
27.02.2016, 04:52
    #39180389
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
kdvсклероз?
Не склероз, а капризы. Я как юзер ДБ хочу решить свою проблему. И мне не нравится что в Firebird не только нет подходящего инструмента (возможности создать ДБ объект использующий дефолтный чарсет на любой момент, а не только на момент создания), а ещё и есть инструмент мешающий (что было дефолтным на момент создания - то теперь и юзай на веки вечные пока ALTER сам не вызовешь).
...
Рейтинг: 0 / 0
27.02.2016, 12:28
    #39180470
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
deboseЯ как юзер ДБ хочу решить свою проблему.
Твоя проблема решается хранением скрипта создания БД в СКВ. Далее его правка,
пересоздание, переливка данных. Но ты вовсе не хочешь "решить свою проблему", ты хочешь
чтобы проблема как-то решилась сама, чужими руками.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.02.2016, 14:19
    #39180527
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
deboseа капризы. Я как юзер ДБ хочу решить свою проблему.
Данные и индексы УЖЕ созданы и хранятся в конкретной кодировке и коллэйте. Для смены чарсета и коллейта на них данные надо будет ПЕРЕКОДИРОВАТЬ, а индексы пересоздавать.

Увы, нет, за тебя никто перекодировать не будет. потому что нет гарантии, что перекодирование возможно.
...
Рейтинг: 0 / 0
27.02.2016, 14:42
    #39180538
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
debosekdvсклероз?
Не склероз, а капризы. Я как юзер ДБ хочу решить свою проблему. И мне не нравится что в Firebird не только нет подходящего инструмента (возможности создать ДБ объект использующий дефолтный чарсет на любой момент, а не только на момент создания), а ещё и есть инструмент мешающий (что было дефолтным на момент создания - то теперь и юзай на веки вечные пока ALTER сам не вызовешь).

а где можно заменить коллейт разом на всей БД?
...
Рейтинг: 0 / 0
27.02.2016, 15:15
    #39180544
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
deboseДобрый день!

В базе куча процедур были созданы с чарсетом UTF8 и дефолтным (для UTF8) collation. Теперь этот коллейт надо поменять на другой (собственноручно-созданный) или сбросить на умолчательный для БД.
Полей много, процедур много, баз много. Как бы это дело автоматизировать?

п.с. пробовал обновлять rdb$fields.rdb$collation_id - помогает только до первого recompile.

Давным-давно делал я что-то такое.
Раньше в экземплах к UIB был дубликатор базы. Очень простой.
На основе его и сделал.

Создаешь другую СУБД, все объекты дублируются, но с нужными характеристиками. И перезаливаешь данные.
Кодить совсем чуть-чуть, дольше ждать, пока данные перезальются.
...
Рейтинг: 0 / 0
27.02.2016, 15:44
    #39180557
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
...
Рейтинг: 0 / 0
29.02.2016, 13:29
    #39181362
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
Dimitry SibiryakovТвоя проблема решается хранением скрипта создания БД в СКВ. Далее его правка,
пересоздание, переливка данных. Но ты вовсе не хочешь "решить свою проблему", ты хочешь
чтобы проблема как-то решилась сама, чужими руками.

В таком же ключе. Моя проблема решается недопущением ошибки.
Я действительно хочу хотел решить эту проблему "малой кровью" (без пересоздания базы из скрипта и перезаливания данных).
Но раз уж вы пишете "Мне очень жаль, но инструмента для решения проблем такого рода в существующих версиях Firebird не предусмотрено. Единственное решение проблемы - пересоздать базу из скрипта с корректными коллэйтами.", то так и буду делать.
...
Рейтинг: 0 / 0
29.02.2016, 13:29
    #39181363
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
Спасибо за ответы
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз? / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]