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