Кодировка системного словаря БД
Функция
Определение оператора задания кодировки, используемой СУБД ЛИНТЕР для представления данных в системных таблицах $$$SYSRL, $$$ATTRI, $$$USR.
Спецификация
::=
Синтаксические правила
-
< Имя кодировки >
должно представлять имя любой загруженной в БД однобайтовой кодировки.
Общие правила
-
Для использования команды в БД должна быть создана и загружена необходимыми данными системная таблица кодировок $$$CHARSET.
-
< Имя кодировки >
задает кодировку, которая будет использоваться для кодировки системного словаря БД (т.е. для представления данных в системных таблицах ($$$SYSRL, $$$ATTRI, $$$USR и др.). -
Если кодировка системного словаря не задана, используется кодовая страница с именем DEFAULT или 0 (если кодировки DEFAULT нет, т.е. встроенная ASCII7).
-
Запрещено выполнение команды
SET DATABASE NAMES
, если имеются индексы на символьные столбцы системных таблиц. В таком случае индексы на системные таблицы следует удалить и после выполненияSET DATABASE NAMES
пересоздать. -
При смене данной командой кодировки системного словаря в БД перекодируются имена пользователей и ролей групп. Но, так как пароли пользователей не перекодируются, после смены кодировки системного словаря все пароли, заданные в национальной кодировке (с кодами символов больше 127), становятся неизвестными СУБД (под ними невозможно зарегистрироваться в БД). В связи с этим создателю БД нельзя назначить пароль в кодировке, отличной от системной кодировки по умолчанию (системная кодировка по умолчанию – это первые 127 символов). При попытке назначить создателю БД пароль в другой кодировке выдается код завершения 1065.
Пример
set database names CP866;