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

Функция

Определение оператора задания кодировки, используемой СУБД ЛИНТЕР для представления данных в системных таблицах $$$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;