powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
16 сообщений из 16, страница 1 из 1
Как изменить collation для всех полей/параметров всех хранимых процедур для кучи баз?
    #39180073
debose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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