Перенос файловой базы 1С на MS SQL или PostgreSQL и дамп серверной базы
Содержание
Выгрузить базу
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С в режиме
Конфигуратор, войдите под пользователем с полными правами. - Откройте
Администрирование → Выгрузить информационную базу. - Укажите путь и имя файла, например
D:\Backup\buh_2026-10-07.dt. - Дождитесь сообщения о завершении. На базе в 10 ГБ это обычно 10–30 минут, в зависимости от диска.
Перед выгрузкой стоит прогнать Тестирование и исправление информационной базы (Администрирование → Тестирование и исправление) с проверкой логической и ссылочной целостности. Ошибки индексов в файловой базе часто всплывают именно при загрузке в SQL.
Шаг 2. Создайте пустую базу на сервере
- В окне запуска 1С нажмите
Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации. - Выберите вариант «На сервере 1С:Предприятия».
- Заполните параметры:
- кластер серверов 1С — имя компьютера с сервером 1С;
- имя информационной базы в кластере — например
buh; - тип СУБД —
MS SQL ServerилиPostgreSQL; - сервер баз данных — имя или адрес сервера СУБД;
- имя базы данных — лучше совпадающее с именем в кластере;
- пользователь и пароль СУБД;
- флажок «Создать базу данных в случае её отсутствия».
- Смещение дат оставьте
2000, если не мигрируете старые базы с особыми требованиями.
Шаг 3. Загрузите .dt в серверную базу
- Откройте новую базу в режиме
Конфигуратор. - Выберите
Администрирование → Загрузить информационную базуи укажите файл.dt. - Подтвердите замену данных. Загрузка полностью стирает содержимое базы-приёмника.
- После загрузки войдите в режиме «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 — запасным вариантом, независимым от СУБД.
Копия, которую ни разу не восстанавливали, — это надежда, а не копия. Пробное восстановление раз в месяц показывает и целостность файла, и реальное время простоя.
Почему выгрузка или загрузка не проходит
Ошибки здесь делятся на две группы: со стороны 1С и со стороны СУБД.
Завершать сеансы и перезапускать службу сервера 1С — только в нерабочее время или после предупреждения. Принудительно закрытые сеансы обрывают работу пользователей, а документы, которые они не записали, теряются.
Восстановление базы из SQL-дампа
Восстановление — зеркало выгрузки. Порядок зависит от того, чем делали копию.
Из .bak в MS SQL
- В SSMS: правой кнопкой по
Databases → Restore Database, источник —Device, выберите файл.bak. - Если восстанавливаете на другой сервер, на вкладке
Filesпоправьте пути.mdfи.ldfпод диски этого сервера. - Тот же результат командой:
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С.
Частые вопросы
Можно ли открыть .bak или дамп PostgreSQL без сервера 1С?
_Document123. Для работы нужен сервер 1С.Можно ли из SQL-базы вернуться в файловую?
.dt, создайте пустую файловую базу и загрузите в неё файл.Сколько весит .dt по сравнению с базой на SQL?
.dt сжат. База в 20 ГБ на SQL часто даёт .dt на 2–5 ГБ.