Кодировка системного словаря БД

Функция

Определение оператора задания кодировки, используемой СУБД ЛИНТЕР для представления данных в системных таблицах $$$SYSRL, $$$ATTRI, $$$USR.

Спецификация
   
< кодировка системного словаря >::=
SET DATABASE NAMES имя кодировки
Синтаксические правила
  1. < Имя кодировки > должно представлять имя любой загруженной в БД однобайтовой кодировки.

Общие правила
  1. Для использования команды в БД должна быть создана и загружена необходимыми данными системная таблица кодировок $$$CHARSET.

  2. < Имя кодировки > задает кодировку, которая будет использоваться для кодировки системного словаря БД (т.е. для представления данных в системных таблицах ($$$SYSRL, $$$ATTRI, $$$USR и др.).

  3. Если кодировка системного словаря не задана, используется кодовая страница с именем DEFAULT или 0 (если кодировки DEFAULT нет, т.е. встроенная ASCII7).

  4. Запрещено выполнение команды SET DATABASE NAMES, если имеются индексы на символьные столбцы системных таблиц. В таком случае индексы на системные таблицы следует удалить и после выполнения SET DATABASE NAMES пересоздать.

  5. При смене данной командой кодировки системного словаря в БД перекодируются имена пользователей и ролей групп. Но, так как пароли пользователей не перекодируются, после смены кодировки системного словаря все пароли, заданные в национальной кодировке (с кодами символов больше 127), становятся неизвестными СУБД (под ними невозможно зарегистрироваться в БД). В связи с этим создателю БД нельзя назначить пароль в кодировке, отличной от системной кодировки по умолчанию (системная кодировка по умолчанию – это первые 127 символов). При попытке назначить создателю БД пароль в другой кодировке выдается код завершения 1065.

Пример
set database names CP866;