Администрирование · 10 мин
Как загрузить базу 1С из файла bak
Как восстановить базу 1С из файла bak через SQL Server Management Studio: подготовка, восстановление, публикация в кластере и проверка результата.
Файл с расширением .bak — это резервная копия базы данных Microsoft SQL Server, на котором работает клиент-серверная версия 1С:Предприятие. Загрузить такой файл напрямую через конфигуратор нельзя: восстановление выполняется средствами СУБД, после чего базу подключают к серверу 1С или прописывают в списке информационных баз. Понимание этой двухэтапной схемы избавляет от главной ошибки новичков — попытки открыть .bak как обычный файл выгрузки .dt.
Перед началом работы убедитесь, что у вас есть доступ к серверу баз данных с правами, достаточными для восстановления (как минимум роль dbcreator, обычно используют sysadmin), установлена SQL Server Management Studio (SSMS) и известна версия SQL Server, на которой создавалась копия. Бэкап, сделанный на более новой версии SQL Server, нельзя восстановить на более старую — это жёсткое ограничение платформы, а не настройка.
Отдельно проверьте свободное место на диске: восстановленная база займёт примерно столько же, сколько занимала исходная, а файл .bak при типичном сжатии может быть в несколько раз меньше. Если копия создавалась без сжатия, размеры будут сопоставимы.
Что такое файл bak и чем он отличается от выгрузки dt
В экосистеме 1С существует два принципиально разных формата резервных копий. Файл .dt — это выгрузка информационной базы через конфигуратор: он содержит данные и конфигурацию в собственном формате платформы и восстанавливается пунктом «Загрузить информационную базу». Файл .bak — это штатная резервная копия MS SQL Server, созданная через план обслуживания, SSMS или скрипт BACKUP DATABASE.
Разница практическая: .bak восстанавливается быстрее на больших базах, сохраняет все настройки СУБД и не требует запуска конфигуратора, но привязан к SQL Server. Выгрузка .dt универсальнее — её можно загрузить даже в файловый вариант базы, — однако на больших объёмах процесс идёт значительно дольше и требует монопольного доступа.
Сравнение вариантов восстановления
Быстро на больших базах, сохраняет структуру СУБД. Требует доступа к SQL Server и совместимой версии.
Универсально, работает между разными СУБД и файловым режимом. Медленно на больших базах, нужен монопольный доступ.
Подходит для файловых баз. Не применимо к .bak — это формат только SQL Server.
Подготовка: что проверить перед восстановлением
Первый шаг — определить версию SQL Server, на которой был создан бэкап. Если файл пришёл от сторонней организации или со старого сервера, восстановите его на той же или более новой версии. Проверить версию своего сервера можно запросом SELECT @@VERSION в SSMS.
Далее убедитесь, что на диске достаточно места для файлов данных и журнала транзакций. Узнать состав файлов внутри бэкапа можно командой RESTORE FILELISTONLY FROM DISK = 'D:\Backup\base.bak' — она покажет логические имена, типы и размеры файлов, которые будут развёрнуты.
Если база с таким именем уже существует на сервере и вы планируете восстановить копию рядом (например, для тестирования), заранее придумайте новое имя базы и пути к файлам. Перезапись рабочей базы без отдельной копии — одна из самых тяжёлых ошибок: откатить её можно только из другой резервной копии.
Восстановление базы через SQL Server Management Studio
Откройте SSMS и подключитесь к экземпляру SQL Server. В обозревателе объектов щёлкните правой кнопкой по узлу «Базы данных» и выберите «Восстановить базу данных». В окне мастера переключите источник на «Устройство», нажмите кнопку обзора и добавьте ваш файл .bak. Если файл лежит на другом компьютере, учтите: SQL Server видит только пути, доступные учётной записи службы SQL Server, поэтому сетевые пути и «Рабочий стол» часто недоступны — надёжнее скопировать файл на локальный диск сервера.
На странице «Файлы» проверьте пути размещения файлов данных и журнала — при необходимости измените их на диски с достаточным объёмом. На странице «Параметры» снимите флажок «Перезаписать существующую базу данных», если восстанавливаете под новым именем, и оставьте состояние восстановления RESTORE WITH RECOVERY — это стандартный режим для одиночного полного бэкапа.
Нажмите «ОК» и дождитесь завершения. На базах в десятки гигабайт процесс может занять от нескольких минут до часа и более — время зависит от дисковой подсистемы. После успешного завершения база появится в списке в состоянии Online.
- 1Скопируйте файл .bak на локальный диск сервера SQL
- 2Откройте SSMS, подключитесь к нужному экземпляру
- 3Правый клик по «Базы данных» → «Восстановить базу данных»
- 4Источник: «Устройство» → выберите файл .bak
- 5Задайте имя новой базы, проверьте пути файлов
- 6Нажмите «ОК» и дождитесь сообщения об успешном восстановлении
Восстановление через T-SQL
Тот же результат даёт скрипт, который удобен для автоматизации и повторяющихся задач:
RESTORE DATABASE [MyBase] FROM DISK = N'D:\Backup\base.bak' WITH MOVE N'DataLogicalName' TO N'D:\SQLData\MyBase.mdf', MOVE N'LogLogicalName' TO N'D:\SQLData\MyBase_log.ldf', REPLACE, RECOVERY;Логические имена файлов (DataLogicalName, LogLogicalName) возьмите из вывода RESTORE FILELISTONLY. Параметр REPLACE указывайте только при осознанной перезаписи существующей базы.
Регистрация восстановленной базы в 1С
После восстановления в SQL Server база сама по себе в списке 1С не появится — её нужно зарегистрировать в кластере серверов 1С. Откройте консоль администрирования серверов 1С:Предприятия, разверните нужный кластер, щёлкните правой кнопкой по ветке «Информационные базы» и выберите «Создать» → «Информационная база».
В диалоге укажите имя базы (как она будет отображаться у пользователей), тип СУБД — MS SQL Server, сервер баз данных и имя базы данных — точно так, как она называется в SQL Server. Задайте пользователя СУБД с правами на эту базу. Флажок «Создать базу данных в случае её отсутствия» устанавливать не нужно — база уже существует.
Если кластера 1С нет (файловый режим на той же машине), .bak всё равно потребует SQL Server. Для работы без СУБД единственный путь — попросить у источника копии выгрузку в формате .dt.
Проверка результата и первый запуск
Первый запуск восстановленной базы выполните в режиме конфигуратора. Платформа может сообщить, что версия конфигурации базы данных требует обновления — это нормально, если бэкап снят с другой версии платформы: примите обновление и дождитесь завершения реструктуризации.
Затем запустите базу в режиме предприятия и проверьте ключевые признаки целостности: открываются ли списки документов, корректны ли остатки в отчётах, присутствуют ли пользователи в справочнике. Для тестовой копии полезно сразу заблокировать фоновые задания и обмены, чтобы копия случайно не отправила данные во внешние системы.
Как проверить результат
Online, без суффикса (Restoring...)
База в состоянии Restoring или Suspect
База открывается, при необходимости предлагает обновление
Ошибка соединения с СУБД или отказ в доступе
Документы и отчёты показывают ожидаемые данные
Пустые списки или ошибки при открытии объектов
Типичные ошибки и их решение
Самая частая ошибка — «The media family on device is incorrectly formed» или сообщение о несовместимой версии: бэкап создан на более новом SQL Server, чем ваш. Решение одно — восстанавливать на сервере той же или более новой версии, либо просить источник пересоздать копию с учётом вашей версии (что не всегда возможно — понижение версий SQL Server не поддерживается).
Вторая группа ошибок связана с доступом: «Operating system error 5 (Access is denied)» означает, что учётная запись службы SQL Server не имеет прав на папку с файлом .bak. Дайте этой учётной записи чтение на каталог или переместите файл в стандартную папку Backup экземпляра.
Третья ситуация — после восстановления 1С не видит базу или выдаёт ошибку аутентификации. Причина почти всегда в отсутствующем логине на новом сервере: создайте логин, сопоставьте его с пользователем базы и назначьте роль db_owner.
FAQ
Можно ли загрузить файл .bak в файловую базу 1С?
Нет, напрямую нельзя: .bak — формат исключительно MS SQL Server. Варианты обхода: восстановить .bak на любом доступном SQL Server (включая бесплатный Express с учётом его ограничений по размеру базы), затем открыть базу в конфигураторе и сделать выгрузку в .dt, которую уже загрузить в файловую базу.
Чем отличается восстановление .bak от загрузки .dt по скорости?
Восстановление .bak выполняется на уровне СУБД и ограничено в основном скоростью дисков, поэтому на больших базах оно ощутимо быстрее. Загрузка .dt идёт через платформу 1С с построением индексов и структур и на объёмных базах может занимать часы.
Бэкап сделан на SQL Server новее моего — что делать?
Обратная совместимость отсутствует: восстановить такой файл на старую версию невозможно никакими настройками. Практические варианты — обновить свой SQL Server, развернуть временный экземпляр нужной версии для восстановления и последующей выгрузки в .dt, либо запросить у источника выгрузку .dt.
После восстановления база в состоянии Restoring — как исправить?
Это означает, что восстановление выполнено с опцией NORECOVERY (или прервано). Выполните команду RESTORE DATABASE [ИмяБазы] WITH RECOVERY — база перейдёт в рабочее состояние Online без повторного восстановления из файла.
Нужно ли что-то настраивать в 1С после подключения тестовой копии?
Да. Отключите регламентные и фоновые задания, обмены данными, интеграции с почтой и внешними сервисами, иначе копия может отправить реальные письма или данные контрагентам. Удобно также изменить заголовок системы или добавить пометку, что это тестовая база.
Можно ли восстановить .bak без SSMS?
Да, через утилиту sqlcmd или скрипт T-SQL из любого инструмента, способного выполнять запросы к серверу. Само восстановление всегда выполняет SQL Server — SSMS лишь удобная оболочка, а не обязательный компонент.
Что важно запомнить
Файл .bak восстанавливается средствами SQL Server, а не конфигуратора. Последовательность: проверка совместимости версий и места на диске → восстановление через SSMS или T-SQL под новым именем → регистрация базы в кластере 1С с правильным логином → проверка данных и отключение регламентных заданий в тестовой копии.