Перенос файловой базы 1С на MS SQL или PostgreSQL и дамп серверной базы

· 10 мин

Содержание

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

Частая ошибка — пытаться скопировать 1Cv8.1CD на сервер и «подключить» его к SQL. Файл файловой базы СУБД не читает. Путь всегда идёт через выгрузку средствами 1С или через штатный бэкап самой СУБД.

Что выбрать до начала: .dt или резервная копия СУБД

Под запросом «выгрузить базу в SQL» скрываются три разные задачи. Метод зависит от того, где база сейчас и куда она едет.

ЗадачаМетодКогда подходитОграничения
Файловая база → SQL-серверВыгрузка .dt и загрузка в новую серверную базуПереход с файлового варианта на клиент-серверныйНужен сервер 1С и монопольный доступ к базе-приёмнику
Серверная база → файл для архиваБэкап СУБД (.bak, pg_dump)Ежедневное резервное копированиеВосстановить можно только в ту же СУБД
Смена СУБД (MS SQL ↔ PostgreSQL)Только .dtМиграция между СУБДДолго на больших базах

Файл .dt не зависит от СУБД. Его можно загрузить и в файловую базу, и в базу на MS SQL, и в PostgreSQL. Бэкап СУБД быстрее и надёжнее для ежедневных копий, но он привязан к своей системе: .bak из MS SQL в PostgreSQL не загрузить.

Что проверить перед стартом:

  • 🖥️ установлен сервер 1С:Предприятия той же версии платформы, что и клиент, на котором делаете выгрузку;
  • 🗄️ СУБД установлена и доступна с сервера 1С: для MS SQL порт 1433, для PostgreSQL — 5432;
  • 👤 есть учётная запись СУБД с правом создавать базы: в MS SQL — роль dbcreator или sysadmin, в PostgreSQL — суперпользователь или роль с CREATEDB;
  • 💾 на диске свободно минимум вдвое больше объёма базы: под .dt и под рост файлов СУБД;
  • 🔑 для клиент-серверного варианта нужна лицензия на сервер 1С, иначе база на SQL не запустится.
Какая у вас ситуация?

Выгрузка базы 1С в .dt через конфигуратор и загрузка на SQL-сервер

Это основной способ перенести файловую базу в SQL. Работает одинаково для бухгалтерии, ЗУП, УТ и любой другой конфигурации: процедура платформенная.

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

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

Перед выгрузкой стоит прогнать Тестирование и исправление информационной базы (Администрирование → Тестирование и исправление) с проверкой логической и ссылочной целостности. Ошибки индексов в файловой базе часто всплывают именно при загрузке в SQL.

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

  1. В окне запуска 1С нажмите Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации.
  2. Выберите вариант «На сервере 1С:Предприятия».
  3. Заполните параметры:
    • кластер серверов 1С — имя компьютера с сервером 1С;
    • имя информационной базы в кластере — например buh;
    • тип СУБД — MS SQL Server или PostgreSQL;
    • сервер баз данных — имя или адрес сервера СУБД;
    • имя базы данных — лучше совпадающее с именем в кластере;
    • пользователь и пароль СУБД;
    • флажок «Создать базу данных в случае её отсутствия».
  4. Смещение дат оставьте 2000, если не мигрируете старые базы с особыми требованиями.

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

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

Загрузка требует монопольного доступа: в базе-приёмнике не должно быть других сеансов.

Выгрузка базы командной строкой: 1cv8 и ibcmd

Конфигуратор с окнами удобен для одного раза. Для регулярной работы и больших баз нужен пакетный запуск.

Пакетный режим 1cv8

Выгрузка файловой базы в .dt:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /DumpIB "D:\Backup\buh.dt" /Out "D:\Backup\dump.log"

Выгрузка серверной базы — вместо /F указывают /S:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /S "srv1c\buh" /N "Администратор" /P "пароль" /DumpIB "D:\Backup\buh.dt" /Out "D:\Backup\dump.log"

Загрузка .dt в базу — ключ /RestoreIB:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /S "srv1c\buh" /N "Администратор" /P "пароль" /RestoreIB "D:\Backup\buh.dt" /Out "D:\Backup\restore.log"

Номер версии в пути подставьте свой: он должен совпадать с версией сервера 1С. Ключ /Out пишет лог — без него в пакетном режиме ошибку не увидеть.

Серверную базу можно создать тоже из командной строки, режимом CREATEINFOBASE:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" CREATEINFOBASE Srvr="srv1c";Ref="buh";DBMS=MSSQLServer;DBSrvr="srvsql";DB="buh";DBUID="sa";DBPwd="пароль";CrSQLDB=Y /Out "D:\Backup\create.log"

Для PostgreSQL вместо MSSQLServer пишут PostgreSQL.

Утилита ibcmd

В платформе 8.3 последних версий есть автономная утилита ibcmd. Она работает с базой без запуска клиента и без сервера 1С, напрямую с файлами или с СУБД. Для выгрузки в .dt у неё есть команда ibcmd infobase dump, для загрузки — ibcmd infobase restore.

Набор параметров подключения (--dbms, --db-server, --db-name, --db-user, --db-pwd) зависит от версии платформы. Точный синтаксис для вашей сборки смотрите в ibcmd help infobase.

Пароли в bat-файле лежат открытым текстом. Храните такие скрипты в папке, доступ к которой есть только у администратора и у учётной записи планировщика.

Особенности MS SQL Server и PostgreSQL

Когда база уже работает на SQL, «выгрузить её в SQL-файл» значит снять бэкап самой СУБД. Здесь у двух систем свои правила.

MS SQL Server

Резервная копия делается командой BACKUP DATABASE в SQL Server Management Studio или через sqlcmd:

BACKUP DATABASE [buh]
TO DISK = N'D:\Backup\buh_full.bak'
WITH INIT, CHECKSUM, STATS = 10;

Что держать в голове:

  • 📏 Express-редакция ограничивает размер одной базы 10 ГБ. Бухгалтерия среднего предприятия упирается в этот потолок за год-два.
  • 🔤 Сортировка (collation) базы — Cyrillic_General_CI_AS. Если 1С создаёт базу сама, сортировку она задаёт правильную. Базу, созданную вручную с другой сортировкой, 1С может не принять.
  • 📒 Модель восстановления Full без регулярных бэкапов журнала раздувает файл .ldf до размеров диска. Либо делайте бэкапы журнала, либо переключите базу на Simple, если восстановление на момент времени не нужно.
  • 🗜️ Сжатие WITH COMPRESSION работает в Standard и Enterprise, в Express его нет.

PostgreSQL

1С работает с PostgreSQL только в специальной сборке: от фирмы 1С или Postgres Pro. В ней есть типы mchar и mvarchar, на которых построены таблицы 1С. Обычная сборка PostgreSQL эти таблицы не поднимет.

Дамп в сжатом формате custom:

pg_dump -U postgres -h localhost -Fc -f /backup/buh.dump buh

Формат -Fc меньше по объёму, чем обычный текстовый SQL, и позволяет восстанавливать в несколько потоков. Текстовый дамп (-Fp) на базе в десятки гигабайт получается огромным и восстанавливается медленно.

На Windows pg_dump попросит пароль. Чтобы скрипт не останавливался, задайте его в файле pgpass.conf в профиле пользователя, от которого идёт задание, или через переменную PGPASSWORD в скрипте.

Сравнение способов

СпособСкорость на базе 50 ГБПереносимостьЧто нужно для восстановления
.dt через 1Счасылюбая СУБД и файловый вариант1С той же версии платформы
BACKUP DATABASEминутытолько MS SQL той же или новее версииSQL Server и регистрация базы в кластере
pg_dump -Fcдесятки минуттолько PostgreSQL для 1Ссборка PostgreSQL с поддержкой 1С

Цифры ориентировочные: многое решают диски и процессор.

Автоматическая выгрузка по расписанию

Ручной бэкап забывают на второй неделе. Расписание настраивают один раз.

MS SQL Standard и выше. В SSMS откройте Management → Maintenance Plans и создайте план с задачами полного бэкапа, проверки целостности и удаления старых файлов. Планы обслуживания выполняет агент SQL Server, поэтому служба SQL Server Agent должна работать.

MS SQL Express. Агента нет. Сохраните команду BACKUP DATABASE в файл backup.sql и запускайте через планировщик Windows:

sqlcmd -S .\SQLEXPRESS -E -i "D:\Scripts\backup.sql" -o "D:\Backup\backup.log"

PostgreSQL на Linux. Строка в crontab пользователя postgres, ежедневно в 2:00, с удалением копий старше 14 дней:

0 2 * * * pg_dump -Fc -f /backup/buh_$(date +\%F).dump buh && find /backup -name 'buh_*.dump' -mtime +14 -delete

Выгрузка .dt по расписанию через 1cv8 DESIGNER /DumpIB тоже возможна, но на рабочих базах её делают реже, например раз в неделю. Бэкап СУБД остаётся основным, .dt — запасным вариантом, независимым от СУБД.

Проверка схемы резервного копирования
Выполнено: 0 / 5

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

Почему выгрузка или загрузка не проходит

Ошибки здесь делятся на две группы: со стороны 1С и со стороны СУБД.

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

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

Восстановление базы из SQL-дампа

Восстановление — зеркало выгрузки. Порядок зависит от того, чем делали копию.

Из .bak в MS SQL

  1. В SSMS: правой кнопкой по Databases → Restore Database, источник — Device, выберите файл .bak.
  2. Если восстанавливаете на другой сервер, на вкладке Files поправьте пути .mdf и .ldf под диски этого сервера.
  3. Тот же результат командой:
RESTORE DATABASE [buh]
FROM DISK = N'D:\Backup\buh_full.bak'
WITH MOVE N'buh' TO N'E:\SQLData\buh.mdf',
     MOVE N'buh_log' TO N'E:\SQLData\buh_log.ldf',
     REPLACE, STATS = 10;

Логические имена файлов (buh, buh_log в примере) у вашей базы могут быть другими. Узнать их можно командой RESTORE FILELISTONLY FROM DISK = N'...'.

Из дампа PostgreSQL

createdb -U postgres buh_restore
pg_restore -U postgres -d buh_restore -j 4 /backup/buh.dump

Ключ -j 4 запускает восстановление в четыре потока. Число потоков берите по числу ядер сервера СУБД.

Подключение восстановленной базы к 1С

Сама по себе база в СУБД пользователю не видна. Её нужно зарегистрировать в кластере 1С:

  1. Откройте консоль администрирования серверов 1С.
  2. В кластере создайте новую информационную базу.
  3. Укажите сервер СУБД и имя уже восстановленной базы данных.
  4. Флажок «Создать базу данных в случае её отсутствия» снимите: база уже есть, а с флажком можно ошибиться в имени и получить пустую.
  5. Добавьте базу в список у пользователей и проверьте вход.

Если восстанавливаете копию поверх рабочей базы, сначала включите блокировку начала сеансов. Иначе СУБД не даст заменить базу, к которой подключены рабочие процессы 1С.

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

Можно ли открыть .bak или дамп PostgreSQL без сервера 1С?
Данные открыть можно средствами СУБД, но работать с ними как с базой 1С нельзя. Имена таблиц там служебные, вроде _Document123. Для работы нужен сервер 1С.
Можно ли из SQL-базы вернуться в файловую?
Да. Выгрузите серверную базу в .dt, создайте пустую файловую базу и загрузите в неё файл.
Сколько весит .dt по сравнению с базой на SQL?
Обычно в несколько раз меньше: файл .dt сжат. База в 20 ГБ на SQL часто даёт .dt на 2–5 ГБ.
Нужна ли отдельная лицензия для работы с базой на SQL?
Да, для клиент-серверного варианта нужна лицензия на сервер 1С. Лицензия СУБД — отдельно: MS SQL Express и PostgreSQL бесплатны, MS SQL Standard платный.
Можно ли выгрузить в SQL только часть данных, например один справочник?
Средствами бэкапа — нет, копируется база целиком. Для частичного переноса используют обработки выгрузки-загрузки XML или правила обмена, это другая задача.