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

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

Как развернуть копию базы 1С на SQL Server

Как развернуть копию базы 1С на SQL Server: создание резервной копии, восстановление через SQL Server Management Studio, регистрация базы в списке 1С и проверка результата.

Развертывание копии базы 1С на SQL Server — стандартная задача администратора: она нужна для создания тестовой среды, проверки обновлений перед установкой в рабочую базу, анализа данных без риска повредить продуктив и обучения пользователей на реальных данных. В отличие от файлового варианта, где достаточно скопировать файл 1Cv8.1CD, в клиент-серверной архитектуре копирование выполняется средствами СУБД с последующей регистрацией базы в кластере 1С или в списке информационных баз.

Процедура состоит из трёх этапов: получение резервной копии на уровне SQL Server, восстановление её под новым именем и подключение восстановленной базы к платформе 1С. Каждый этап имеет свои подводные камни — от нехватки прав учётной записи до конфликта имён баз в кластере. Ниже разобраны все шаги с проверками результата и типичными ошибками.

Когда нужна копия базы и какой способ выбрать

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

Копия через SQL Server создаётся быстро, не требует остановки работы пользователей (при использовании полной модели восстановления и осторожном планировании) и сохраняет данные на момент создания бэкапа. Ограничение: восстанавливать базу нужно на тот же или совместимый экземпляр SQL Server, а версия СУБД целевого сервера не должна быть ниже версии источника.

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

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

Подходит для небольших баз и переноса между разными СУБД. Требует монопольного доступа, на больших базах занимает часы.

Backup/Restore средствами SQL Server

Оптимально для рабочих SQL-баз любого размера. Быстро, не требует выгона пользователей, но привязано к конкретной СУБД.

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

Возможно только при остановленной службе SQL Server или отсоединённой базе. Используется редко, рискованно при ошибках.

Подготовка: что проверить перед началом

Перед созданием копии убедитесь, что у вас есть необходимые права. Для создания резервной копии достаточно роли db_backupoperator в исходной базе, для восстановления новой базы — права dbcreator или sysadmin на уровне экземпляра SQL Server. Если копию будет регистрировать другой специалист, заранее согласуйте имя новой базы: оно должно быть уникальным и на экземпляре SQL Server, и в кластере 1С.

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

Создание резервной копии исходной базы

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

Альтернатива графическому интерфейсу — команда T-SQL, которую удобно сохранить как скрипт для регулярного использования. Она же позволяет автоматизировать процесс через планировщик.

sql
BACKUP DATABASE [Trade_Base] TO DISK = N'D:\Backup\Trade_Base_copy.bak' WITH COPY_ONLY, COMPRESSION, CHECKSUM;

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

Восстановление копии под новым именем

В SSMS щёлкните правой кнопкой по узлу «Базы данных» и выберите «Восстановить базу данных». В качестве источника укажите «Устройство» и путь к файлу .bak. В поле «Назначение» впишите новое имя базы — например, Trade_Base_Test. Обязательно проверьте вкладку «Файлы»: физические имена файлов .mdf и .ldf должны быть уникальными, иначе восстановление попытается перезаписать файлы рабочей базы.

Ту же операцию можно выполнить скриптом. Предварительно узнайте логические имена файлов внутри бэкапа командой RESTORE FILELISTONLY, затем выполните восстановление с параметром MOVE.

sql
RESTORE FILELISTONLY FROM DISK = N'D:\Backup\Trade_Base_copy.bak';
RESTORE DATABASE [Trade_Base_Test] FROM DISK = N'D:\Backup\Trade_Base_copy.bak'
WITH MOVE N'Trade_Base' TO N'D:\SQLData\Trade_Base_Test.mdf',
MOVE N'Trade_Base_log' TO N'D:\SQLData\Trade_Base_Test_log.ldf', RECOVERY;

После завершения восстановления убедитесь, что база находится в состоянии ONLINE и доступна для запросов. Если база осталась в состоянии Restoring — скорее всего, был указан параметр NORECOVERY вместо RECOVERY, выполните RESTORE DATABASE с RECOVERY повторно без восстановления данных.

Регистрация копии в кластере 1С

Восстановленная база SQL сама по себе ещё не доступна пользователям 1С — её нужно зарегистрировать в кластере серверов 1С:Предприятия. Откройте консоль управления серверами 1С, разверните нужный кластер, перейдите в «Информационные базы» и создайте новую базу. Укажите имя (оно будет отображаться в списке у пользователей), тип СУБД MS SQL Server, имя экземпляра SQL Server и имя восстановленной базы — Trade_Base_Test.

Ключевой момент: снимите флаг «Создать базу данных в случае её отсутствия» или следите, чтобы имя базы данных точно совпадало с восстановленной. Если оставить флаг и ошибиться в имени, платформа создаст рядом пустую базу, и вы подключите пользователей к пустышке. Учётная запись, указанная для доступа к СУБД, должна иметь права владельца (db_owner) на восстановленную базу.

Порядок действий целиком
  1. 1
    Создайте полную резервную копию рабочей базы в SSMS с параметром COPY_ONLY
  2. 2
    Восстановите бэкап под новым именем, проверив уникальность имён файлов .mdf и .ldf
  3. 3
    Убедитесь, что восстановленная база в состоянии ONLINE
  4. 4
    Зарегистрируйте новую информационную базу в консоли кластера 1С без создания новой БД
  5. 5
    Зайдите в копию конфигуратором и отключите регламентные задания
  6. 6
    Проверьте вход пользователем и работу ключевых отчётов

Отключение регламентных заданий и опасных настроек

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

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

Типичные ошибки
01
Восстановление копии под именем рабочей базы — продуктивные данные уничтожаются, восстановление возможно только из последнего штатного бэкапа
02
Забытые регламентные задания — тестовая копия отправляет реальные данные во внешние системы
03
Флаг «Создать базу данных» при регистрации в кластере — вместо копии подключается пустая база
04
Конфликт имён файлов .mdf/.ldf — восстановление падает с ошибкой или пытается перезаписать файлы рабочей базы
05
Недостаток прав учётной записи 1С на новую базу — пользователи получают ошибку доступа к СУБД

Проверка результата и обслуживание копии

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

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

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

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

Состояние базы в SSMS
Норма

База в статусе ONLINE, запросы выполняются

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

Статус Restoring или Suspect — восстановление не завершено корректно

Список баз в кластере 1С
Норма

Новая база видна, имя совпадает с восстановленной

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

Базы нет в списке или рядом появилась пустая база с похожим именем

Данные в копии
Норма

Отчёты совпадают с рабочей базой на момент бэкапа

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

Данные отсутствуют или устарели — восстановлен не тот бэкап

Регламентные задания
Норма

Задания заблокированы, обмены не выполняются

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

Задания активны — копия взаимодействует с внешними системами

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

Можно ли развернуть копию на другом сервере SQL?

Да, при условии, что версия SQL Server на целевом сервере не ниже версии источника. Перенесите файл .bak на новый сервер и выполните восстановление с корректными путями к файлам. Если кластер 1С остаётся прежним, в настройках информационной базы укажите новый экземпляр СУБД.

Нужно ли останавливать работу пользователей для создания бэкапа?

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

Что делать, если при восстановлении появляется ошибка о занятых файлах?

Ошибка означает, что вы пытаетесь восстановить базу поверх существующей, файлы которой используются. Либо укажите другое имя базы и уникальные пути к файлам через параметр MOVE, либо, если перезапись действительно нужна, переведите целевую базу в offline и используйте опцию REPLACE — но только если точно уверены, что перезаписываете именно копию.

Можно ли из копии SQL-базы сделать файловую базу 1С?

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

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

Настройте скрипт, который по расписанию выполняет FULL-бэкап рабочей базы и восстановление поверх тестовой с опцией REPLACE, после чего запускает отключение регламентных заданий. Скрипт запускается через планировщик задач Windows или агент SQL Server. Перед восстановлением убедитесь, что в тестовой базе никто не работает.

Отличается ли процедура для PostgreSQL?

Да, инструменты другие: резервная копия создаётся утилитой pg_dump или pg_basebackup, восстанавливается через pg_restore или psql. Общая логика та же — копия средствами СУБД, восстановление под новым именем, регистрация в кластере 1С и отключение регламентных заданий.

Итог

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

Копия SQL-базы 1С разворачивается через Backup/Restore под новым именем с последующей регистрацией в кластере. Критичные точки: уникальные имена базы и файлов, отключённые регламентные задания, проверка данных после восстановления. Никогда не восстанавливайте копию под именем рабочей базы.