Новое имя серверной информационной базы 1С: что менять в кластере, в СУБД и у пользователей
Содержание
Переименовать информационную базу 1С на сервере кнопкой «Переименовать» нельзя: поле «Имя» в свойствах базы в консоли администрирования кластера не редактируется. Рабочий способ — снять регистрацию базы в кластере, не удаляя саму базу данных, и зарегистрировать её заново под новым именем, указав ту же базу в СУБД. Данные при этом не трогаются, меняется только запись в реестре кластера.
Имя базы данных в MS SQL или PostgreSQL — отдельная сущность. Его меняют средствами СУБД, а потом правят свойство «База данных» в кластере. Ещё один уровень — название в списке баз у пользователя: оно живёт на его компьютере и меняется за минуту. Сначала решите, какое из трёх имён вам нужно сменить.
Какое имя базы 1С вы на самом деле меняете
У серверной базы 1С сразу несколько «имён», и путаница между ними — главная причина лишней работы.
| Что меняем | Где хранится | Как видно пользователю | Чем меняют |
|---|---|---|---|
| Название в списке баз | файл ibases.v8i на компьютере пользователя | строка в окне запуска 1С | кнопка «Изменить» в окне запуска |
| Имя в кластере | реестр кластера сервера 1С | параметр Ref= в строке соединения | перерегистрация через консоль или rac |
| Описание в кластере | реестр кластера | только в консоли | свойства базы, поле «Описание» |
| Имя базы данных в СУБД | MS SQL / PostgreSQL | параметр «База данных» в кластере | ALTER DATABASE + правка свойства в кластере |
| Заголовок программы | данные самой базы | заголовок главного окна | раздел Администрирование → Общие настройки |
Если бухгалтер просто хочет видеть «Торговый дом 2» вместо «buh_td2», серверную часть трогать не нужно. Достаточно поменять название в окне запуска или заголовок программы.
Подготовка к переименованию базы 1С на сервере
Переименование не меняет данные, но на время работ база будет недоступна. Подготовка занимает больше времени, чем сама смена имени.
- 📦 Резервная копия. Сделайте бэкап средствами СУБД (полный backup в MS SQL или
pg_dumpв PostgreSQL) или выгрузку.dtчерез Конфигуратор:Администрирование → Выгрузить информационную базу. Для больших баз бэкап СУБД быстрее и надёжнее. - 📝 Выпишите параметры базы. Откройте свойства базы в консоли и перепишите: сервер баз данных, тип СУБД, имя базы данных, пользователя СУБД, флаг «Разрешить выдачу лицензий сервером 1С», язык, смещение дат, состояние блокировки регламентных заданий, профиль безопасности. Пароль пользователя СУБД нужно знать заранее — консоль его не показывает.
- 🔐 Проверьте права. Нужны логин администратора кластера (если он задан) и учётная запись СУБД с правом на базу. Для переименования в СУБД — права владельца базы или администратора сервера СУБД.
- 👥 Освободите базу. Предупредите пользователей, включите блокировку начала сеансов и дождитесь выхода или завершите сеансы.
- 🔎 Соберите места, где прописано старое имя. Списки баз у пользователей, веб-публикация (
default.vrd), скрипты резервного копирования, обработки обмена и COM-подключения других систем, ярлыки с параметром/S.
Завершение сеансов из консоли обрывает работу пользователей: несохранённые документы пропадут. Делайте это вне рабочего времени или после предупреждения.
Блокировку начала сеансов включают в свойствах базы в консоли: флаг «Блокировка начала сеансов включена», текст сообщения и интервал. Там же ставят «Блокировка регламентных заданий включена», чтобы фоновые задания не держали соединения.
Перерегистрация в консоли администрирования серверов 1С
Консоль — оснастка Администрирование серверов 1С Предприятия. Она подключается к агенту сервера (по умолчанию порт 1540). Порядок такой.
Шаг 1. Снимите регистрацию старой базы
- Раскройте
Центральные серверы 1С:Предприятия → <ваш сервер> → Кластеры → <кластер> → Информационные базы. - Убедитесь, что в ветке «Сеансы» этой базы пусто.
- Нажмите на базе правой кнопкой и выберите «Удалить».
- В окне удаления введите логин и пароль администратора информационной базы (если в базе есть пользователи).
- Выберите вариант «Оставить базу данных без изменений».
Не выбирайте «Удалить базу данных» и «Очистить базу данных » — первое удалит базу в СУБД, второе сотрёт все таблицы. Отменить это можно только восстановлением из бэкапа.
Шаг 2. Зарегистрируйте базу под новым именем
- На ветке «Информационные базы» выберите «Создать → Информационная база».
- В поле «Имя» введите новое имя. Пишите латиницей без пробелов:
buh_td2,zup_main. Кириллица допустима, но в строках соединения и скриптах латиница надёжнее. - «Описание» — понятное людям название, например «Бухгалтерия ТД 2».
- «Сервер баз данных», «Тип СУБД», «Пользователь сервера БД», «Пароль» — как у старой базы.
- «База данных» — имя существующей базы в СУБД (старое или уже новое, если вы его сменили).
- «Создать базу данных в случае ее отсутствия» — снимите флаг. Раз база есть, флаг не нужен, а при опечатке в имени он создаст пустую базу вместо ошибки.
- Отметьте «Разрешить выдачу лицензий сервером 1С», если флаг стоял у старой регистрации.
- Нажмите ОК.
После этого восстановите в свойствах новой регистрации всё, что выписали: блокировку регламентных заданий, профиль безопасности, смещение дат.
Перерегистрация не трогает данные: пользователи 1С, конфигурация, история изменений остаются в базе СУБД. Сбрасываются только настройки, которые кластер хранит у себя, — их вы и переносите вручную.
Смена имени через утилиту командной строки rac
Если консоли под рукой нет или серверов несколько, то же самое делают через rac. Утилите нужен запущенный сервер администрирования ras (по умолчанию слушает порт 1545). rac лежит в каталоге bin платформы, например C:\Program Files\1cv8\8.3.24.1548\bin\.
Найдите кластер и базу
rac localhost:1545 cluster list
rac localhost:1545 infobase --cluster=<uuid-кластера> summary list
Первая команда выдаст идентификатор кластера, вторая — список баз с их infobase (UUID) и name. Если у кластера есть администратор, добавляйте к командам --cluster-user=<логин> --cluster-pwd=<пароль>.
Снимите регистрацию без удаления данных
rac localhost:1545 infobase --cluster=<uuid-кластера> drop ^
--infobase=<uuid-базы> ^
--infobase-user=<админ ИБ> --infobase-pwd=<пароль>
Без параметров --drop-database и --clear-database команда удаляет только регистрацию. Не добавляйте эти параметры по привычке — они уничтожают данные.
Зарегистрируйте базу с новым именем
rac localhost:1545 infobase --cluster=<uuid-кластера> create ^
--name=buh_td2 ^
--dbms=MSSQLServer ^
--db-server=sql01 ^
--db-name=buh_td2 ^
--db-user=sa1c --db-pwd=<пароль> ^
--locale=ru ^
--license-distribution=allow
Параметр --create-database здесь не нужен: база в СУБД уже существует. Для PostgreSQL укажите --dbms=PostgreSQL. Остальные параметры (описание, смещение дат, блокировки) смотрите в справке:
rac help infobase
Если вы поменяли только имя базы данных в СУБД, а имя в кластере оставляете прежним, перерегистрация не нужна. Достаточно обновить свойство «База данных» — в консоли или командой rac ... infobase update с параметром --db-name.
Переименование базы данных в СУБД (для опытных администраторов)
Этот способ меняет имя базы данных в MS SQL Server или PostgreSQL. Таблицы 1С внутри не трогаются. Никогда не правьте вручную служебные таблицы 1С и файл реестра кластера 1CV8Clst.lst — при ошибке кластер или база перестанут запускаться.
Перед командами ниже остановите работу с базой: включите блокировку сеансов в кластере и завершите сеансы. Иначе рабочие процессы 1С держат соединения, и СУБД откажет в переименовании.
MS SQL Server
USE master;
ALTER DATABASE [buh_old] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [buh_old] MODIFY NAME = [buh_td2];
ALTER DATABASE [buh_td2] SET MULTI_USER;
ROLLBACK IMMEDIATE откатывает незавершённые транзакции и обрывает чужие подключения. То же можно сделать в SQL Server Management Studio: правой кнопкой по базе → «Переименовать».
Имена файлов .mdf и .ldf при этом не меняются. Обычно это не мешает. Если нужен порядок и в файлах, логические имена меняют так:
ALTER DATABASE [buh_td2] MODIFY FILE (NAME = N'buh_old', NEWNAME = N'buh_td2');
ALTER DATABASE [buh_td2] MODIFY FILE (NAME = N'buh_old_log', NEWNAME = N'buh_td2_log');
Реальные логические имена посмотрите запросом SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('buh_td2');. Физические файлы переименовывают только после перевода базы в offline — это отдельная процедура с отсоединением, и без нужды её лучше не затевать.
PostgreSQL
-- подключаемся к базе postgres, не к переименовываемой
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = 'buh_old' AND pid <> pg_backend_pid();
ALTER DATABASE buh_old RENAME TO buh_td2;
PostgreSQL не переименует базу, к которой есть хоть одно подключение, включая ваше собственное. Владелец и права при переименовании сохраняются.
Не забудьте про кластер
Сразу после смены имени в СУБД откройте свойства базы в консоли 1С и поменяйте поле «База данных» на новое. Пока вы этого не сделали, база не запустится: кластер ищет старое имя.
Чем отличается переименование в файловом и клиент-серверном варианте
В файловом варианте база — это каталог с файлом 1Cv8.1CD. Кластера нет, поэтому и «имени на сервере» нет.
| Файловая база | Клиент-серверная база | |
|---|---|---|
| Где «имя» | путь к каталогу | имя в кластере + имя базы в СУБД |
| Как сменить | закрыть все сеансы, переименовать каталог | перерегистрация в кластере и/или ALTER DATABASE |
| Строка соединения | File="D:\Base\buh_td2"; | Srvr="srv1c";Ref="buh_td2"; |
| Что сломается | ярлыки и списки с путём к каталогу | списки баз, веб-публикация, скрипты, обмены |
| Нужны права | на папку в файловой системе | администратор кластера, права в СУБД |
Перед переименованием каталога файловой базы проверьте, что в нём нет файла 1Cv8tmp.1CD и никто не работает
: если каталог занят, Windows не даст его переименовать. Потом поправьте путь у всех пользователей через «Изменить» в окне запуска.
Если база файловая, но лежит в общей папке на сервере, это всё равно файловый вариант. Слово «сервер» в таком случае означает только место хранения.
Что поменять после смены имени
Старое имя прописано не только в кластере. Пройдитесь по списку, пока не выяснили это от пользователей.
Если пользователи подключаются через общий файл списка баз (.v8i на сетевом ресурсе или из настройки 1CEStart.cfg), достаточно поправить его один раз. Иначе — у каждого: «Изменить» → «Далее» → новое имя в поле «Информационная база».
Для веб-публикации откройте default.vrd в каталоге публикации и замените в атрибуте ib значение Ref=. Можно переопубликовать базу из Конфигуратора под администратором, указав то же имя публикации.
Ошибки после переименования базы на сервере и как их исправить
Большинство проблем возникает из-за того, что какое-то из имён осталось старым.
Если после перерегистрации база открывается, но ведёт себя странно (не те права, другой профиль безопасности), сравните свойства новой регистрации с записанными на этапе подготовки. Кластер не переносит их сам.
Частые вопросы
Можно ли переименовать базу, не выгоняя пользователей?
Меняется ли что-то внутри базы после перерегистрации?
Нужно ли заново активировать лицензии?
Можно ли просто выгрузить .dt и загрузить его в новую базу с нужным именем?
.dt через Конфигуратор, старую удалите позже. Для баз в десятки гигабайт выгрузка и загрузка займут часы, и перерегистрация выгоднее.