Переход файловой базы 1С на сервер СУБД: MS SQL или PostgreSQL

· 10 мин

Содержание

Чтобы перевести 1С из файловой версии в SQL, выгрузите базу в файл .dt через Конфигуратор → Администрирование → Выгрузить информационную базу, создайте новую базу на сервере 1С:Предприятия с СУБД MS SQL Server или PostgreSQL и загрузите в неё этот файл командой Администрирование → Загрузить информационную базу. Отдельный конвертер не нужен: формат .dt одинаково читается и файловой, и клиент-серверной базой.

Выбор СУБД решают три вещи: на какой ОС стоит сервер, есть ли лицензия Microsoft и кто будет обслуживать базу. MS SQL Server привычнее Windows-админам. PostgreSQL бесплатен и работает и на Windows, и на Linux, но для 1С нужна специальная сборка. Сама процедура переноса для обеих СУБД одинакова, различаются подготовка и обслуживание.

Что подготовить до перевода базы в SQL

Клиент-серверный вариант — это три компонента: сервер 1С:Предприятия (агент, менеджер кластера, рабочие процессы), сервер СУБД и клиенты. Сервер 1С и СУБД можно поставить на одну машину, для 10–30 пользователей так обычно и делают.

Что нужно заранее:

  • 🖥️ Сервер под Windows Server 2016 и новее или под Linux. Ориентир для небольшой базы на 10–20 пользователей: 4 ядра, 16 ГБ ОЗУ, SSD. Памяти СУБД всегда мало, экономить на ней нельзя.
  • 🔑 Лицензия на сервер 1С:Предприятия 8. Клиентских лицензий файловой версии для клиент-серверной работы недостаточно: без серверной лицензии кластер базу не запустит.
  • 📦 Дистрибутив платформы той же версии, что у клиентов. Номер версии сервера и клиента должен совпадать полностью, вплоть до последней цифры сборки.
  • 🗄️ СУБД одной из поддерживаемых: Microsoft SQL Server, PostgreSQL (сборка с патчами для 1С), IBM Db2 или Oracle Database. На практике выбирают из первых двух.

MS SQL Server или PostgreSQL

КритерийMS SQL ServerPostgreSQL для 1С
СтоимостьПлатная лицензия (Express не подходит для рабочей нагрузки из-за ограничений)Бесплатно
ОСWindows, LinuxWindows, Linux
СборкаОбычная от MicrosoftТолько адаптированная для 1С (от фирмы 1С или Postgres Pro)
Смещение дат при создании базы20000
Инструменты обслуживанияSQL Server Management Studio, планы обслуживанияpgAdmin, pg_dump, vacuumdb, скрипты по расписанию
Кому подходитЕсть Windows-инфраструктура и лицензииНужна экономия или сервер на Linux

Обычный PostgreSQL из репозитория дистрибутива Linux для 1С не подходит. Ставьте сборку, которую 1С указывает как совместимую, — у неё есть нужные расширения и типы данных.

Установка сервера 1С и порты

При установке платформы отметьте компонент «Сервер 1С:Предприятия 8» и установку как службы Windows. Служба по умолчанию запускается от пользователя USR1CV8. Ему нужны права на каталог кластера и на каталог, куда вы будете класть файлы .dt.

Откройте в брандмауэре порты:

  • 1540 — агент сервера, к нему обращаются клиент и консоль администрирования;
  • 1541 — менеджер кластера;
  • 1560–1591 — рабочие процессы (диапазон задаётся в свойствах рабочего сервера);
  • 1433 для MS SQL или 5432 для PostgreSQL — если СУБД стоит на отдельной машине.

Выгрузка и загрузка .dt: как перевести 1С в SQL пошагово

У старой платформы 7.7 была своя процедура перехода с DBF на SQL. В 8.3 такой утилиты нет и она не нужна: всё делается штатной выгрузкой и загрузкой информационной базы.

Шаг 1. Выгрузите файловую базу

  1. Попросите всех пользователей выйти из базы. Всё, что внесут после начала выгрузки, в файл не попадёт.
  2. Откройте базу в режиме «Конфигуратор» под пользователем с полными правами.
  3. Выполните Администрирование → Выгрузить информационную базу, укажите путь и имя файла, например D:\backup\buh_2026.dt.
  4. Дождитесь сообщения о завершении выгрузки. База на 10 ГБ выгружается примерно 10–30 минут, в зависимости от диска.

Не удаляйте и не переименовывайте исходную файловую базу , пока не проверите новую. Каталог с файлом 1Cv8.1CD — ваш план отката.

Шаг 2. Создайте базу на сервере 1С

Проще всего создать базу прямо из окна запуска 1С:

  1. Нажмите Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации.
  2. Выберите вариант «На сервере 1С:Предприятия».
  3. Заполните параметры.
ПолеЧто указать
Кластер серверов 1С:ПредприятияИмя сервера 1С, например srv1c
Имя информационной базы в кластереКороткое имя латиницей, например buh
Тип СУБДMS SQL Server или PostgreSQL
Сервер баз данныхИмя сервера СУБД; для MS SQL с именованным экземпляром — srv1c\SQL2019
Имя базы данныхИмя базы в СУБД, удобно совпадает с именем в кластере
Пользователь и пароль сервера БДУчётная запись СУБД, от имени которой 1С создаст базу
Смещение дат2000 для MS SQL, 0 для PostgreSQL
Создать базу данных в случае ее отсутствияОтметить
Установить блокировку регламентных заданийОтметить на время переноса

Блокировка регламентных заданий нужна, чтобы новая база не начала, например, загружать курсы валют или обмениваться данными до того, как вы её проверите.

Если база — участник обмена (с УТ, сайтом, ЭДО), не снимайте блокировку регламентных заданий, пока не отключите старую файловую копию. Иначе обе базы начнут забирать одни и те же данные.

Шаг 3. Загрузите .dt в новую базу

  1. Запустите новую серверную базу в «Конфигураторе». Она пустая, поэтому пользователей нет и пароль не спрашивают.
  2. Выполните Администрирование → Загрузить информационную базу и выберите файл .dt.
  3. Подтвердите предупреждение о замене данных.
  4. После загрузки Конфигуратор предложит перезапуститься — согласитесь.

Загрузка идёт дольше выгрузки: СУБД строит таблицы и индексы. База на 10 ГБ может грузиться час и больше.

Шаг 4. Переключите пользователей

Добавьте новую базу в список у пользователей и удалите старую файловую строку, чтобы никто случайно не продолжил работать в ней. Если пользователей много, разошлите общий список баз через файл .v8i или настройку общих списков в 1CEStart.cfg.

Проверка базы после переноса в SQL
Выполнено: 0 / 6

Пользователи и права после переноса базы в SQL

Тут три уровня, и их часто путают.

1. Пользователи информационной базы. Список из Администрирование → Пользователи в Конфигураторе переезжает внутри .dt вместе с паролями и ролями. Заново их заводить не нужно. Если пользователи входят по аутентификации Windows, проверьте, что у них указан домен и имя пользователя в формате \\ДОМЕН\ivanov — на сервере это работает так же, как в файловой базе.

2. Администратор кластера. По умолчанию у кластера нет администраторов, и любой, кто откроет консоль, может удалить базу. Заведите администратора в «Администрировании серверов 1С:Предприятия» в свойствах кластера. Пароль храните отдельно: при его потере придётся останавливать службу и восстанавливать настройки кластера из резервной копии.

3. Учётная запись СУБД. Для создания базы 1С нужны права на создание баз данных:

  • в MS SQL — роль dbcreator на уровне сервера, а для созданной базы — db_owner;
  • в PostgreSQL — пользователь с правом CREATEDB, часто используют postgres.

Не давайте пользователям 1С доступ к самой СУБД. Они работают через сервер 1С, и учётная запись СУБД нужна только ему. Прямой вход в SQL Management Studio — это прямая дорога к испорченным данным.

Настройка производительности базы 1С на SQL

Сразу после переноса база может работать не быстрее файловой, а то и медленнее. Это нормально: СУБД нужно настроить и обслуживать.

Память СУБД

  • 🧠 MS SQL. Ограничьте max server memory в свойствах сервера. Если SQL и сервер 1С на одной машине с 32 ГБ, оставьте SQL примерно 18–20 ГБ, остальное — рабочим процессам 1С и ОС. Без ограничения SQL займёт всю память.
  • 🧠 PostgreSQL. В postgresql.conf настройте shared_buffers (ориентир — около четверти ОЗУ) и effective_cache_size (около половины-двух третей ОЗУ). Адаптированные для 1С сборки часто ставятся с более подходящими значениями, но проверьте их под свою память.

Регламентные операции

ОперацияMS SQLPostgreSQLКак часто
Обновление статистикиПлан обслуживания «Update Statistics»vacuumdb --analyzeЕжедневно ночью
Перестроение индексовПлан обслуживания «Rebuild Index»REINDEX или vacuumdb --fullРаз в неделю
Очистка процедурного кешаDBCC FREEPROCCACHE после обновления статистики—Вместе со статистикой
Очистка мусора—Автовакуум (проверить, что включён)Постоянно

Перестроение индексов и vacuumdb --full блокируют таблицы. Ставьте их на ночь или выходные, когда в базе никто не работает, иначе пользователи получат ошибки блокировок и подвисания.

Режим восстановления MS SQL

После создания база 1С на MS SQL обычно получает модель восстановления Full. В этом режиме журнал транзакций растёт, пока вы не делаете его резервные копии. Без бэкапов журнала файл .ldf за пару месяцев вырастает больше самой базы.

Выбор простой:

  • нужны точки восстановления в течение дня → оставляйте Full и настраивайте бэкап журнала;
  • хватит ежедневной копии → переключите на Simple.

Управляемые блокировки

Типовые конфигурации (БП 3.0, ЗУП 3.1, УТ 11) уже работают в управляемом режиме блокировок, здесь ничего делать не нужно. Если у вас старая или сильно доработанная конфигурация, проверьте свойство «Режим управления блокировкой данных» в корне конфигурации. Автоматический режим на сервере СУБД даёт заметно больше конфликтов при одновременной работе.

Ошибки при переводе файловой 1С в SQL

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

Если загрузка .dt упала посередине, не пытайтесь «дотянуть» базу. Удалите информационную базу в кластере вместе с базой в СУБД и повторите шаги 2–3 с нуля. Исходная файловая база при этом не страдает.

Перезапуск службы «Агент сервера 1С:Предприятия» или службы SQL Server обрывает все сеансы пользователей без сохранения. Делайте это только после того, как все вышли из базы, или в нерабочее время.

Резервное копирование серверной базы 1С

Копировать каталог с файлом 1Cv8.1CD, как в файловой версии, больше нельзя: данных там нет. Бэкап делается средствами СУБД.

Что настроить

  • 💾 MS SQL: план обслуживания с полной копией (Full) раз в сутки, разностной (Differential) днём при необходимости и копией журнала каждые 15–60 минут, если модель восстановления Full.
  • 💾 PostgreSQL: pg_dump по расписанию в формате custom, восстановление через pg_restore. Для точек восстановления внутри дня нужна архивация WAL — это уже работа администратора СУБД.
  • 📁 Выгрузка .dt раз в неделю или перед обновлением конфигурации. Это не замена бэкапу СУБД, но такой файл загрузится в любую базу, хоть файловую.

Пример ночной копии для PostgreSQL в планировщике Windows:

@echo off
set PGPASSWORD=пароль_пользователя_postgres
set D=%date:~6,4%-%date:~3,2%-%date:~0,2%
"C:\Program Files\PostgreSQL\<версия>\bin\pg_dump.exe" -U postgres -h localhost -F c -f "D:\backup\buh_%D%.backup" buh

Путь к pg_dump.exe подставьте свой: он зависит от установленной версии PostgreSQL. Формат даты в переменной D рассчитан на русскую локаль Windows.

Правило 3-2-1

Копии на том же диске, что и база, не спасут при отказе диска или шифровальщике. Держите минимум одну копию на другом носителе и одну вне офиса. И раз в месяц пробуйте восстановить копию в тестовую базу — непроверенный бэкап часто оказывается пустым или битым.

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

Можно ли вернуть серверную базу обратно в файловую?
Да. Выгрузите серверную базу в .dt, создайте пустую файловую базу и загрузите в неё файл. Процедура зеркальна переходу в SQL.
Нужна ли отдельная лицензия на MS SQL Server?
Да, для рабочей базы нужна платная редакция SQL Server с лицензиями по правилам Microsoft. Если бюджета нет, выбирайте PostgreSQL для 1С — он бесплатен.
Сохранятся ли расширения конфигурации и настройки пользователей?
Расширения, данные, пользователи и их настройки входят в .dt и переносятся. Внешние обработки, сохранённые файлами на диске, нужно скопировать отдельно и проверить пути к ним.
Сколько пользователей нужно, чтобы был смысл переходить на SQL?
Жёсткого порога нет. Обычно переходят, когда одновременно работают 10–15 человек и чаще, база выросла до нескольких гигабайт или нужен удалённый доступ через интернет без общих папок.
Можно ли перенести базу без остановки работы?
Нет. На время выгрузки в базе никто не должен работать, а всё, что внесут в файловую базу после выгрузки, в серверную не попадёт. Планируйте перенос на вечер или выходной.