Новое имя серверной информационной базы 1С: что менять в кластере, в СУБД и у пользователей

· 10 мин

Содержание

Переименовать информационную базу 1С на сервере кнопкой «Переименовать» нельзя: поле «Имя» в свойствах базы в консоли администрирования кластера не редактируется. Рабочий способ — снять регистрацию базы в кластере, не удаляя саму базу данных, и зарегистрировать её заново под новым именем, указав ту же базу в СУБД. Данные при этом не трогаются, меняется только запись в реестре кластера.

Имя базы данных в MS SQL или PostgreSQL — отдельная сущность. Его меняют средствами СУБД, а потом правят свойство «База данных» в кластере. Ещё один уровень — название в списке баз у пользователя: оно живёт на его компьютере и меняется за минуту. Сначала решите, какое из трёх имён вам нужно сменить.

Какое имя базы 1С вы на самом деле меняете

У серверной базы 1С сразу несколько «имён», и путаница между ними — главная причина лишней работы.

Что меняемГде хранитсяКак видно пользователюЧем меняют
Название в списке базфайл ibases.v8i на компьютере пользователястрока в окне запуска 1Скнопка «Изменить» в окне запуска
Имя в кластеререестр кластера сервера 1Спараметр Ref= в строке соединенияперерегистрация через консоль или rac
Описание в кластеререестр кластератолько в консолисвойства базы, поле «Описание»
Имя базы данных в СУБДMS SQL / PostgreSQLпараметр «База данных» в кластереALTER DATABASE + правка свойства в кластере
Заголовок программыданные самой базызаголовок главного окнараздел Администрирование → Общие настройки

Если бухгалтер просто хочет видеть «Торговый дом 2» вместо «buh_td2», серверную часть трогать не нужно. Достаточно поменять название в окне запуска или заголовок программы.

Что вам нужно получить?

Подготовка к переименованию базы 1С на сервере

Переименование не меняет данные, но на время работ база будет недоступна. Подготовка занимает больше времени, чем сама смена имени.

  1. 📦 Резервная копия. Сделайте бэкап средствами СУБД (полный backup в MS SQL или pg_dump в PostgreSQL) или выгрузку .dt через Конфигуратор: Администрирование → Выгрузить информационную базу. Для больших баз бэкап СУБД быстрее и надёжнее.
  2. 📝 Выпишите параметры базы. Откройте свойства базы в консоли и перепишите: сервер баз данных, тип СУБД, имя базы данных, пользователя СУБД, флаг «Разрешить выдачу лицензий сервером 1С», язык, смещение дат, состояние блокировки регламентных заданий, профиль безопасности. Пароль пользователя СУБД нужно знать заранее — консоль его не показывает.
  3. 🔐 Проверьте права. Нужны логин администратора кластера (если он задан) и учётная запись СУБД с правом на базу. Для переименования в СУБД — права владельца базы или администратора сервера СУБД.
  4. 👥 Освободите базу. Предупредите пользователей, включите блокировку начала сеансов и дождитесь выхода или завершите сеансы.
  5. 🔎 Соберите места, где прописано старое имя. Списки баз у пользователей, веб-публикация (default.vrd), скрипты резервного копирования, обработки обмена и COM-подключения других систем, ярлыки с параметром /S.

Завершение сеансов из консоли обрывает работу пользователей: несохранённые документы пропадут. Делайте это вне рабочего времени или после предупреждения.

Блокировку начала сеансов включают в свойствах базы в консоли: флаг «Блокировка начала сеансов включена», текст сообщения и интервал. Там же ставят «Блокировка регламентных заданий включена», чтобы фоновые задания не держали соединения.

Перерегистрация в консоли администрирования серверов 1С

Консоль — оснастка Администрирование серверов 1С Предприятия. Она подключается к агенту сервера (по умолчанию порт 1540). Порядок такой.

Шаг 1. Снимите регистрацию старой базы

  1. Раскройте Центральные серверы 1С:Предприятия → <ваш сервер> → Кластеры → <кластер> → Информационные базы.
  2. Убедитесь, что в ветке «Сеансы» этой базы пусто.
  3. Нажмите на базе правой кнопкой и выберите «Удалить».
  4. В окне удаления введите логин и пароль администратора информационной базы (если в базе есть пользователи).
  5. Выберите вариант «Оставить базу данных без изменений».

Не выбирайте «Удалить базу данных» и «Очистить базу данных » — первое удалит базу в СУБД, второе сотрёт все таблицы. Отменить это можно только восстановлением из бэкапа.

Шаг 2. Зарегистрируйте базу под новым именем

  1. На ветке «Информационные базы» выберите «Создать → Информационная база».
  2. В поле «Имя» введите новое имя. Пишите латиницей без пробелов: buh_td2, zup_main. Кириллица допустима, но в строках соединения и скриптах латиница надёжнее.
  3. «Описание» — понятное людям название, например «Бухгалтерия ТД 2».
  4. «Сервер баз данных», «Тип СУБД», «Пользователь сервера БД», «Пароль» — как у старой базы.
  5. «База данных» — имя существующей базы в СУБД (старое или уже новое, если вы его сменили).
  6. «Создать базу данных в случае ее отсутствия» — снимите флаг. Раз база есть, флаг не нужен, а при опечатке в имени он создаст пустую базу вместо ошибки.
  7. Отметьте «Разрешить выдачу лицензий сервером 1С», если флаг стоял у старой регистрации.
  8. Нажмите ОК.

После этого восстановите в свойствах новой регистрации всё, что выписали: блокировку регламентных заданий, профиль безопасности, смещение дат.

Перерегистрация не трогает данные: пользователи 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 не даст его переименовать. Потом поправьте путь у всех пользователей через «Изменить» в окне запуска.

Если база файловая, но лежит в общей папке на сервере, это всё равно файловый вариант. Слово «сервер» в таком случае означает только место хранения.

Что поменять после смены имени

Старое имя прописано не только в кластере. Пройдитесь по списку, пока не выяснили это от пользователей.

После перерегистрации базы
Выполнено: 0 / 7

Если пользователи подключаются через общий файл списка баз (.v8i на сетевом ресурсе или из настройки 1CEStart.cfg), достаточно поправить его один раз. Иначе — у каждого: «Изменить» → «Далее» → новое имя в поле «Информационная база».

Для веб-публикации откройте default.vrd в каталоге публикации и замените в атрибуте ib значение Ref=. Можно переопубликовать базу из Конфигуратора под администратором, указав то же имя публикации.

Ошибки после переименования базы на сервере и как их исправить

Большинство проблем возникает из-за того, что какое-то из имён осталось старым.

Диагностика: выберите симптом

Если после перерегистрации база открывается, но ведёт себя странно (не те права, другой профиль безопасности), сравните свойства новой регистрации с записанными на этапе подготовки. Кластер не переносит их сам.

Частые вопросы

Можно ли переименовать базу, не выгоняя пользователей?
Нет. Перерегистрация и переименование в СУБД требуют, чтобы к базе никто не был подключён. Планируйте работы на вечер или выходные.
Меняется ли что-то внутри базы после перерегистрации?
Данные, пользователи 1С и конфигурация остаются прежними. У новой регистрации в кластере будет новый внутренний идентификатор, а настройки кластера (блокировки, профиль безопасности) нужно задать заново.
Нужно ли заново активировать лицензии?
Нет. Программные лицензии привязаны к компьютеру, на котором работает сервер или клиент, а не к имени базы. Проверьте только флаг «Разрешить выдачу лицензий сервером 1С» у новой регистрации.
Можно ли просто выгрузить .dt и загрузить его в новую базу с нужным именем?
Можно. Это самый простой путь, если база небольшая: создайте новую базу в кластере, загрузите .dt через Конфигуратор, старую удалите позже. Для баз в десятки гигабайт выгрузка и загрузка займут часы, и перерегистрация выгоднее.
Какие символы допустимы в имени базы?
Кластер принимает и латиницу, и кириллицу, но пробелы и кириллица усложняют скрипты, строки соединения и веб-публикацию. Безопасный вариант — латинские буквы, цифры и подчёркивание.