Администрирование · 10 мин
Как восстановить базу 1С из SQL-бэкапа
Подробная инструкция по восстановлению базы 1С из SQL-бэкапа: восстановление через SSMS и T-SQL, подключение к серверу 1С, проверка результата и типичные ошибки.
Восстановление базы 1С из SQL-бэкапа — стандартная задача администратора при сбое сервера, повреждении данных или переносе информационной базы на новое оборудование. В отличие от файлового варианта, где достаточно скопировать файл 1Cv8.1CD, клиент-серверная база хранится в СУБД (чаще всего Microsoft SQL Server), и её восстановление выполняется средствами самой СУБД, а не конфигуратора 1С.
Процесс состоит из трёх этапов: восстановление базы данных из файла .bak в SQL Server, проверка или создание регистрации базы в консоли сервера 1С и контрольный запуск. Если бэкап делался на том же сервере и база просто повреждена, задача решается за несколько минут. Если перенос идёт на новый сервер, потребуется дополнительно настроить пользователя СУБД и прописать базу в кластере 1С.
Важно понимать: SQL-бэкап содержит только данные базы. Настройки кластера, список информационных баз и регистрационные данные в нём не хранятся — их придётся восстанавливать отдельно или создавать заново вручную.
Что проверить перед началом восстановления
Первое — убедитесь, что у вас есть целостный файл бэкапа. Если бэкап делался штатными средствами SQL Server, это файл с расширением .bak (полная копия) или набор файлов, если использовалась дифференциальная схема. Проверить целостность можно командой RESTORE VERIFYONLY в SQL Server Management Studio (SSMS) — она не восстанавливает данные, но подтверждает, что файл читается и не повреждён.
Второе — узнайте версию SQL Server, на которой создавался бэкап. Бэкап с более новой версии СУБД нельзя восстановить на более старую: например, копию с SQL Server 2019 не развернуть на SQL Server 2016. Обратная совместимость (со старой на новую) обычно работает без проблем.
Третье — оцените свободное место на диске. Для восстановления нужно место под сам файл бэкапа плюс объём развёрнутой базы данных. Если база в рабочем состоянии занимала 50 ГБ, на целевом сервере должно быть не меньше свободного пространства с запасом на рост и временные файлы.
Бэкап развернётся; на старой версии восстановление невозможно
Иначе восстановление прервётся с ошибкой диска
Для разностного нужен сначала полный, затем последний разностный
Без них восстановление базы невозможно
Подготовка: остановка работы пользователей и резервная копия текущего состояния
Если вы восстанавливаете базу поверх существующей (например, откатываете её на вчерашнее состояние из-за ошибочных действий), все сеансы пользователей должны быть завершены. SQL Server не даст восстановить базу, пока к ней есть активные подключения. Завершить сеансы можно через консоль управления сервером 1С или принудительно перевести базу в однопользовательский режим.
Обязательно сделайте резервную копию текущего состояния базы, даже если оно повреждено или содержит ошибочные данные. Практика показывает, что после отката иногда выясняется: часть данных за «потерянный» день всё же нужна, и без копии текущего состояния вернуть её будет невозможно.
Восстановление через SQL Server Management Studio
Самый наглядный способ — графический интерфейс SSMS. Подключитесь к экземпляру SQL Server под учётной записью с правами администратора (sysadmin) и выполните следующие шаги.
- 1Откройте SSMS и подключитесь к нужному экземпляру SQL Server
- 2Кликните правой кнопкой по узлу «Базы данных» и выберите «Восстановить базу данных»
- 3Выберите источник «Устройство» и укажите путь к файлу .bak
- 4На вкладке «Файлы» проверьте пути размещения файлов данных и журнала
- 5На вкладке «Параметры» при восстановлении поверх существующей базы включите «Перезаписать существующую базу данных (WITH REPLACE)» и «Закрыть существующие соединения»
- 6Нажмите «ОК» и дождитесь завершения операции
- 7Проверьте, что база появилась в списке и находится в состоянии «в сети»
Опция «Закрыть существующие соединения» принудительно разрывает активные подключения к базе — используйте её, только если уверены, что пользователи завершили работу. Опция WITH REPLACE опасна тем, что перезаписывает базу без дополнительных предупреждений, поэтому дважды проверьте имя целевой базы перед запуском.
Если восстанавливаете цепочку «полный бэкап + разностный», сначала восстановите полный с параметром «Оставить базу данных неработоспособной» (WITH NORECOVERY), затем разностный — уже с восстановлением в рабочее состояние (WITH RECOVERY).
Восстановление командой T-SQL
Для автоматизации или работы без графического интерфейса удобнее скрипт T-SQL. Базовая команда выглядит так:
RESTORE DATABASE [MyBase1C]
FROM DISK = N'D:\Backups\MyBase1C_full.bak'
WITH REPLACE, RECOVERY, STATS = 10;Если файлы данных нужно разместить в других каталогах (например, структура дисков нового сервера отличается), используйте параметр MOVE с указанием логических имён файлов. Узнать логические имена можно командой RESTORE FILELISTONLY FROM DISK = 'путь_к_бэкапу'.
RESTORE FILELISTONLY FROM DISK = N'D:\Backups\MyBase1C_full.bak';
RESTORE DATABASE [MyBase1C]
FROM DISK = N'D:\Backups\MyBase1C_full.bak'
WITH MOVE 'MyBase1C_Data' TO 'E:\SQLData\MyBase1C.mdf',
MOVE 'MyBase1C_Log' TO 'F:\SQLLog\MyBase1C.ldf',
REPLACE, RECOVERY;Параметр STATS = 10 выводит прогресс восстановления с шагом в 10 процентов — удобно при работе с большими базами, чтобы понимать, что процесс идёт и не завис.
Регистрация базы в кластере 1С
Если база восстанавливалась на том же сервере под тем же именем и регистрация в кластере 1С сохранилась, этот шаг можно пропустить. При переносе на новый сервер базу нужно зарегистрировать: откройте консоль управления серверами 1С, найдите нужный кластер, в ветке «Информационные базы» создайте новую базу.
В свойствах укажите имя информационной базы, тип СУБД (MS SQL Server), имя сервера баз данных и имя базы данных — оно должно точно совпадать с именем восстановленной базы в SQL Server. Укажите пользователя СУБД, под которым сервер 1С будет подключаться к базе.
Пользователь СУБД, указанный в регистрации, должен иметь права владельца (db_owner) на восстановленную базу. Если бэкап перенесён с другого сервера, логин может отсутствовать на новом экземпляре — создайте его и сопоставьте с пользователем базы, иначе сервер 1С не сможет подключиться.
Проверка результата и запуск в работу
После восстановления откройте базу в конфигураторе. Успешный вход подтверждает, что связка «сервер 1С — SQL Server» работает. Затем запустите тестирование и исправление базы или хотя бы проверьте ключевые данные: откройте несколько документов за последние даты перед сбоем, сформируйте оборотно-сальтовую ведомость, сверьте итоги с ожидаемыми.
Как проверить результат
База в сети, без суффикса «восстановление»
База в состоянии Restoring — не выполнен WITH RECOVERY
Вход выполняется, список пользователей на месте
Ошибка подключения — проверяйте регистрацию и права пользователя СУБД
Документы и остатки соответствуют дате бэкапа
Данные старше ожидаемых — восстановлен не тот файл бэкапа
Открывается, содержит записи до даты бэкапа
Пустой журнал при его наличии до сбоя — признак развёртывания не той копии
Только после успешной проверки открывайте доступ пользователям. Если восстановление делалось в тестовую копию, убедитесь, что пользователи подключаются к нужной базе — типичная ситуация, когда тестовая и рабочая базы путают, приводит к вводу реальных документов в копию.
Типичные ошибки и их решение
Отдельная проблема — так называемые «осиротевшие» пользователи после переноса базы на другой сервер. Пользователь базы данных существует, но не связан с логином на уровне сервера. Решается созданием логина с тем же именем и выполнением процедуры сопоставления (sp_change_users_login или ALTER USER ... WITH LOGIN).
Частые вопросы
Можно ли восстановить базу 1С из SQL-бэкапа на сервер с другим именем?
Да. Имя сервера не зашито в бэкап. Восстановите базу на новом SQL Server, затем в консоли кластера 1С укажите новое имя сервера СУБД в свойствах информационной базы. Дополнительно создайте и сопоставьте логин пользователя СУБД.
Чем восстановление из SQL-бэкапа отличается от загрузки .dt?
Файл .dt — выгрузка средствами 1С, независимая от СУБД, но медленная на больших базах. SQL-бэкап разворачивается значительно быстрее и содержит точную копию базы на момент копирования, но привязан к семейству и версии СУБД. Для больших баз SQL-бэкап — основной способ резервного копирования.
База восстановилась, но 1С пишет «информационная база не обнаружена». Что делать?
Проверьте три вещи: точное совпадение имени базы в регистрации кластера и в SQL Server, права пользователя СУБД (нужен db_owner) и доступность сервера баз данных с сервера 1С по сети. Чаще всего причина — несовпадение имени базы или отсутствующий логин после переноса.
Можно ли восстановить только часть данных, а не всю базу?
Штатными средствами — нет, восстановление выполняется целиком. Обходной путь: развернуть бэкап в отдельную базу с другим именем, выгрузить нужные документы или справочники через обработку переноса данных и загрузить их в рабочую базу.
Как часто нужно делать SQL-бэкапы базы 1С?
Рекомендуемая схема для рабочих баз: полный бэкап ежедневно в нерабочее время плюс разностные копии несколько раз в день. Для баз с интенсивным вводом данных дополнительно настраивают копии журнала транзакций — это позволяет восстановить состояние на конкретный момент времени.
Бэкап занимает очень много места. Можно ли его сжать?
Да, SQL Server поддерживает сжатие резервных копий — сжатый файл обычно заметно меньше исходного, а восстановление из него выполняется стандартно, без дополнительных действий. Проверьте, что ваша редакция SQL Server поддерживает сжатие бэкапов.
Что важно запомнить
Восстановление базы 1С из SQL-бэкапа сводится к трём шагам: развернуть .bak в SQL Server, проверить регистрацию и права в кластере 1С, контрольно запустить конфигуратор. Перед восстановлением поверх рабочей базы всегда делайте копию текущего состояния, а после переноса на новый сервер не забывайте про сопоставление логина пользователя СУБД.