К статье
Практический материал

Администрирование · 12 мин

Как выгрузить базу данных из SQL Server для 1С

Как выгрузить базу 1С из SQL Server: резервная копия через SSMS, выгрузка в dt через конфигуратор, отличия методов, типичные ошибки и проверка результата.

Базы 1С в клиент-серверном варианте хранятся в Microsoft SQL Server, и задача выгрузки возникает регулярно: при переносе на новый сервер, перед обновлением конфигурации, для создания архивной копии или передачи базы разработчику. Существует два принципиально разных подхода — резервное копирование средствами SQL Server (файл .bak) и выгрузка через конфигуратор 1С (файл .dt). Они не взаимозаменяемы и решают разные задачи.

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

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

Определитесь с форматом выгрузки: .bak или .dt

Прежде чем что-либо выгружать, ответьте на вопрос: зачем нужна копия. Если цель — защита от сбоя, откат после неудачного обновления или восстановление на том же сервере, оптимален бэкап средствами SQL Server. Он выполняется быстро даже для больших баз, может работать по расписанию без отключения пользователей и восстанавливается за минуты.

Если базу нужно перенести на другой сервер с иной версией SQL Server, перевести в файловый вариант, передать подрядчику или загрузить в другую СУБД (PostgreSQL), необходим файл .dt. Это логическая выгрузка, независимая от устройства хранения. Её минусы — длительность (база в сотни гигабайт может выгружаться часами), необходимость выгнать пользователей и повышенные требования к памяти на стороне сервера 1С.

Сравнение способов выгрузки

Бэкап SQL Server (.bak)

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

Выгрузка .dt через конфигуратор

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

Копирование файлов .mdf/.ldf

Только при остановленной службе SQL Server или после отсоединения базы. Рискованный способ, для регулярных копий не подходит.

Как сделать резервную копию через SQL Server Management Studio

Установите и запустите SQL Server Management Studio (SSMS), подключитесь к экземпляру сервера с учётной записью, имеющей права на резервное копирование (роль sysadmin или db_backupoperator). В обозревателе объектов раскройте узел «Базы данных» и найдите нужную базу — её имя можно посмотреть в списке информационных баз в консоли кластера 1С.

Щёлкните по базе правой кнопкой мыши, выберите «Задачи» → «Создать резервную копию». В окне настройки укажите тип копии «Полная», проверьте путь назначения и при необходимости замените его на диск с достаточным свободным местом. Размер .bak-файла обычно заметно меньше размера данных за счёт исключения свободного пространства, но подстрахуйтесь запасом. Нажмите «ОК» и дождитесь сообщения об успешном завершении.

Полную копию рабочей базы SQL Server делает «на горячую», не блокируя пользователей. Тем не менее для критичных операций (обновление конфигурации) имеет смысл выполнять бэкап в период минимальной активности, чтобы все важные транзакции были завершены.

Резервное копирование в SSMS
  1. 1
    Подключитесь к серверу в SSMS под учётной записью с правами на бэкап
  2. 2
    Найдите базу в списке «Базы данных»
  3. 3
    Правый клик → «Задачи» → «Создать резервную копию»
  4. 4
    Выберите тип «Полная» и укажите путь к файлу .bak
  5. 5
    Нажмите «ОК» и дождитесь сообщения об успехе
  6. 6
    Проверьте, что файл создан и имеет ненулевой размер

Тот же бэкап через T-SQL

Для автоматизации и включения в скрипты удобнее команда BACKUP DATABASE. Она выполняется в окне запроса SSMS и легко встраивается в задания агента SQL Server или планировщик Windows.

sql
BACKUP DATABASE [MyBase1C] TO DISK = N'D:\Backups\MyBase1C_full.bak' WITH COMPRESSION, CHECKSUM;

Параметр COMPRESSION уменьшает размер файла (поддерживается не во всех редакциях SQL Server), CHECKSUM добавляет проверку целостности при записи. Путь указывается относительно сервера, где работает SQL Server, а не вашего рабочего компьютера — частая причина ошибок «не найден путь».

Как выгрузить базу в файл .dt через конфигуратор

Выгрузка .dt выполняется из конфигуратора 1С и требует монопольного доступа: все пользователи и фоновые сеансы должны быть завершены. В клиент-серверном варианте проще всего открыть консоль кластера серверов 1С, найти информационную базу и в её свойствах установить блокировку начала сеансов, а затем принудительно завершить активные соединения. Альтернатива — параметр блокировки через «Администрирование» в толстом клиенте.

Затем запустите конфигуратор, авторизуйтесь под пользователем с правами администратора и откройте меню «Администрирование» → «Выгрузить информационную базу». Укажите каталог и имя файла, дождитесь окончания процесса. На больших базах прогресс может визуально «замирать» — это нормально, прерывать операцию нельзя.

Учтите требования к ресурсам: при выгрузке данных из SQL Server сервер 1С активно использует оперативную память и дисковое пространство. На слабом сервере процесс способен занять часы и завершиться ошибкой нехватки памяти. Если база крупная (десятки и сотни гигабайт), планируйте выгрузку на ночь или выходные.

Выгрузка .dt из командной строки

Для регламентных операций конфигуратор можно запустить пакетно с параметром DumpIB. Это удобно для скриптов обслуживания, выполняемых по расписанию.

bash
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /S"Server\MyBase1C" /N"Администратор" /P"пароль" /DumpIB"D:\Backups\MyBase1C.dt"

Ключ /S задаёт сервер и имя базы, /N и /P — логин и пароль пользователя 1С. Хранить пароль в открытом виде в скрипте небезопасно: ограничьте доступ к файлу скрипта или используйте другие механизмы защиты учётных данных.

Как проверить, что выгрузка удалась

Сам факт появления файла не гарантирует работоспособность копии. Для .bak минимальная проверка — команда RESTORE VERIFYONLY, которая читает файл и подтверждает его целостность без фактического восстановления. Полная проверка — тестовое восстановление в базу с другим именем на том же или тестовом сервере.

Для .dt надёжный способ проверки один: загрузить файл в пустую информационную базу через конфигуратор («Администрирование» → «Загрузить информационную базу») и убедиться, что база открывается, справочники и документы на месте, отчёты формируются. Проверяйте копии регулярно, а не в момент аварии.

Контрольные точки

Как проверить результат

Файл .bak создан
Норма

Размер сопоставим с объёмом данных, RESTORE VERIFYONLY завершается без ошибок

Тревожный признак

Файл нулевого размера, ошибки чтения при проверке

Тестовое восстановление .bak
Норма

База восстанавливается и открывается в 1С

Тревожный признак

Ошибка о несовместимости версии SQL Server

Файл .dt
Норма

Загружается в пустую базу, данные читаются

Тревожный признак

Ошибка формата или обрыв загрузки

Полнота данных
Норма

Оборотно-сальдовая ведомость в копии совпадает с рабочей базой

Тревожный признак

Расхождения в итогах, отсутствуют документы

Типичные ошибки и ограничения

Самая распространённая проблема при бэкапе — нехватка прав или места. Учётная запись службы SQL Server должна иметь доступ на запись в целевую папку; сетевые пути часто недоступны для служебной учётной записи, поэтому надёжнее писать на локальный диск сервера, а затем копировать файл в хранилище.

При выгрузке .dt типичны три сценария сбоя: отсутствие монопольного доступа (выгрузка не стартует), нехватка памяти или места на диске (процесс обрывается на больших таблицах) и попытка прервать «зависшую» выгрузку, что приводит к повреждённому файлу. Ещё одна ошибка — путать .dt и .bak: загрузить .bak через конфигуратор невозможно, а .dt нельзя восстановить через SSMS.

Типичные ошибки
01
Выгрузка .dt при активных сеансах — обрыв процесса или несогласованные данные
02
Бэкап в сетевую папку без прав у службы SQL Server — ошибка доступа к файлу
03
Попытка восстановить .bak на более старой версии SQL Server — отказ с ошибкой совместимости
04
Копирование .mdf/.ldf при работающем SQL Server — повреждённые или несогласованные файлы
05
Отсутствие тестового восстановления — в момент аварии копия оказывается нерабочей

Особые сценарии: большие базы и переезд на другую СУБД

Если база занимает сотни гигабайт, выгрузка .dt может быть практически невыполнима в разумное время. В этом случае для переноса между серверами SQL Server используйте связку «бэкап на старом сервере → восстановление на новом». Переезд на PostgreSQL или в файловый вариант всё равно потребует .dt, поэтому заранее закладывайте длительное окно обслуживания и тестируйте процедуру на копии.

Для баз с включённым хранением больших объёмов вне таблиц (FILESTREAM) бэкап захватывает и эти данные — убедитесь, что на целевом сервере FILESTREAM настроен. При переносе на новый сервер также проверьте настройки сортировки (collation): для 1С требуется Cyrillic_General_CI_AS, несоответствие приведёт к ошибкам при регистрации базы в кластере.

Маршрут решения

Как выбрать действие

Нужна ежедневная регламентная копия рабочей базыНастройте задание BACKUP DATABASE по расписанию в агенте SQL Server
Базу передают разработчику или переносят на другую СУБДВыгрузите .dt через конфигуратор в нерабочее время
Переезд на новый сервер SQL Server той же или новее версииСделайте .bak и восстановите его на новом сервере, затем перерегистрируйте базу в кластере 1С
Нужна копия перед обновлением конфигурацииСделайте оба варианта: .bak для быстрого отката и .dt как страховку

Организация регулярного резервного копирования

Разовая выгрузка не заменяет систему резервного копирования. Минимально разумная схема для рабочей базы: полная копия ежедневно в нерабочее время плюс разностные копии или копии журнала транзакций в течение дня, если база работает в полной модели восстановления. Храните копии на отдельном носителе или сервере — бэкап на том же диске, что и база, не защищает от отказа диска.

Настройте ротацию: удаляйте устаревшие файлы по расписанию, чтобы диск не переполнялся. Периодически (хотя бы раз в месяц) выполняйте контрольное восстановление на тестовом сервере — это единственный способ убедиться, что копии реально пригодны.

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

Можно ли выгрузить базу 1С из SQL Server без остановки работы пользователей?

Резервную копию .bak — да, SQL Server создаёт её «на горячую». Выгрузка .dt через конфигуратор требует монопольного доступа, поэтому пользователей придётся отключить. Для регулярных копий без простоя используйте бэкап средствами СУБД.

Чем отличается файл .dt от файла .bak?

.bak — физическая копия базы на уровне SQL Server, восстанавливается только на SQL Server и только на версии не старше исходной. .dt — логическая выгрузка платформы 1С, переносится между разными СУБД и режимами (серверный/файловый), но создаётся дольше и требует монопольного доступа.

Как восстановить .bak на сервере с более старой версией SQL Server?

Напрямую — никак: SQL Server не поддерживает восстановление копий на старших версиях. Варианты обхода: выгрузить данные в .dt на исходном сервере и загрузить на целевом, либо поднять промежуточный сервер нужной версии.

Сколько места нужно для выгрузки базы?

Для .bak ориентируйтесь на размер данных в базе (его видно в свойствах базы в SSMS), сжатие уменьшает файл. Для .dt размер файла обычно меньше размера базы, но в процессе выгрузки потребуется дополнительное место и оперативная память на сервере 1С — закладывайте запас.

Почему выгрузка .dt «зависла» на одном месте?

На больших таблицах индикатор прогресса может долго не меняться — это нормально. Проверьте активность на сервере (загрузка диска и памяти). Прерывать процесс нельзя: файл будет повреждён. Если процесс реально остановился с ошибкой памяти, увеличьте ресурсы сервера или используйте перенос через .bak.

Можно ли просто скопировать файлы .mdf и .ldf базы?

Только если служба SQL Server остановлена или база отсоединена (Detach). Копирование файлов работающей базы даст несогласованные данные. Для регулярных копий этот способ не подходит — используйте штатный BACKUP.

Итог

Что важно запомнить

Для бэкапа используйте BACKUP DATABASE в SSMS — быстро и без отключения пользователей. Для переноса между СУБД и передачи базы — выгрузку .dt через конфигуратор с монопольным доступом. Любую копию проверяйте тестовым восстановлением, а файлы копий храните отдельно от рабочей базы с ограниченным доступом.