Переход файловой базы 1С на сервер СУБД: MS SQL или PostgreSQL
Содержание
Чтобы перевести 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 Server | PostgreSQL для 1С |
|---|---|---|
| Стоимость | Платная лицензия (Express не подходит для рабочей нагрузки из-за ограничений) | Бесплатно |
| ОС | Windows, Linux | Windows, Linux |
| Сборка | Обычная от Microsoft | Только адаптированная для 1С (от фирмы 1С или Postgres Pro) |
| Смещение дат при создании базы | 2000 | 0 |
| Инструменты обслуживания | 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. Выгрузите файловую базу
- Попросите всех пользователей выйти из базы. Всё, что внесут после начала выгрузки, в файл не попадёт.
- Откройте базу в режиме «Конфигуратор» под пользователем с полными правами.
- Выполните
Администрирование → Выгрузить информационную базу, укажите путь и имя файла, напримерD:\backup\buh_2026.dt. - Дождитесь сообщения о завершении выгрузки. База на 10 ГБ выгружается примерно 10–30 минут, в зависимости от диска.
Не удаляйте и не переименовывайте исходную файловую базу
, пока не проверите новую. Каталог с файлом 1Cv8.1CD — ваш план отката.
Шаг 2. Создайте базу на сервере 1С
Проще всего создать базу прямо из окна запуска 1С:
- Нажмите
Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации. - Выберите вариант «На сервере 1С:Предприятия».
- Заполните параметры.
| Поле | Что указать |
|---|---|
| Кластер серверов 1С:Предприятия | Имя сервера 1С, например srv1c |
| Имя информационной базы в кластере | Короткое имя латиницей, например buh |
| Тип СУБД | MS SQL Server или PostgreSQL |
| Сервер баз данных | Имя сервера СУБД; для MS SQL с именованным экземпляром — srv1c\SQL2019 |
| Имя базы данных | Имя базы в СУБД, удобно совпадает с именем в кластере |
| Пользователь и пароль сервера БД | Учётная запись СУБД, от имени которой 1С создаст базу |
| Смещение дат | 2000 для MS SQL, 0 для PostgreSQL |
| Создать базу данных в случае ее отсутствия | Отметить |
| Установить блокировку регламентных заданий | Отметить на время переноса |
Блокировка регламентных заданий нужна, чтобы новая база не начала, например, загружать курсы валют или обмениваться данными до того, как вы её проверите.
Если база — участник обмена (с УТ, сайтом, ЭДО), не снимайте блокировку регламентных заданий, пока не отключите старую файловую копию. Иначе обе базы начнут забирать одни и те же данные.
Шаг 3. Загрузите .dt в новую базу
- Запустите новую серверную базу в «Конфигураторе». Она пустая, поэтому пользователей нет и пароль не спрашивают.
- Выполните
Администрирование → Загрузить информационную базуи выберите файл.dt. - Подтвердите предупреждение о замене данных.
- После загрузки Конфигуратор предложит перезапуститься — согласитесь.
Загрузка идёт дольше выгрузки: СУБД строит таблицы и индексы. База на 10 ГБ может грузиться час и больше.
Шаг 4. Переключите пользователей
Добавьте новую базу в список у пользователей и удалите старую файловую строку, чтобы никто случайно не продолжил работать в ней. Если пользователей много, разошлите общий список баз через файл .v8i или настройку общих списков в 1CEStart.cfg.
Пользователи и права после переноса базы в 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 SQL | PostgreSQL | Как часто |
|---|---|---|---|
| Обновление статистики | План обслуживания «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?
Сохранятся ли расширения конфигурации и настройки пользователей?
.dt и переносятся. Внешние обработки, сохранённые файлами на диске, нужно скопировать отдельно и проверить пути к ним.