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

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

Как сделать копию базы 1С на SQL Server

Пошаговая инструкция по созданию копии базы 1С на SQL Server: резервное копирование, восстановление под новым именем, регистрация в кластере 1С и проверка результата.

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

Есть два основных подхода. Первый — сделать резервную копию средствами SQL Server и восстановить её под новым именем, а затем зарегистрировать базу в консоли кластера 1С. Второй — выгрузить базу в файл .dt через конфигуратор и загрузить в новую пустую базу. Оба способа рабочие, но различаются по скорости, требованиям к правам и сохранности настроек.

Ниже разобраны оба метода с точными действиями, типичными ошибками и способами проверки результата. Материал ориентирован на администратора, у которого есть доступ к SQL Server Management Studio (SSMS) и консоли администрирования серверов 1С.

Что понадобится перед началом работы

Для копирования базы через SQL Server потребуются: учётная запись с правами на создание резервных копий и восстановление баз (обычно роль sysadmin или db_backupoperator плюс разрешение на restore), доступ к консоли администрирования серверов 1С, достаточно свободного места на дисках SQL Server — под копию базы и под файл резервной копии.

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

Оцените размер базы: в SSMS правый клик по базе — «Свойства» — страница «Общие». Если база занимает десятки гигабайт, заранее проверьте, хватит ли места на диске, куда будет писаться backup, и на дисках данных и журнала для новой копии.

Способ 1: копия через backup и restore в SQL Server

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

Шаг 1. Создание резервной копии рабочей базы

В SSMS подключитесь к экземпляру SQL Server, раскройте узел «Базы данных», найдите рабочую базу. Правый клик — «Задачи» — «Создать резервную копию». Тип копии — «Полная», назначение — файл на диске, например D:\Backup\base_full_copy.bak. Дождитесь сообщения об успешном завершении.

Тот же результат даёт T-SQL команда:

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

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

Шаг 2. Восстановление копии под новым именем

Правый клик по узлу «Базы данных» — «Восстановить базу данных». Источник — «Устройство», укажите созданный файл .bak. В поле «База данных назначения» впишите новое имя, например MyBase1C_Test. На странице «Файлы» проверьте пути к файлам данных и журнала — они не должны пересекаться с файлами рабочей базы.

Через T-SQL восстановление с новыми путями файлов выглядит так:

sql
RESTORE DATABASE [MyBase1C_Test] FROM DISK = N'D:\Backup\MyBase1C_copy.bak' WITH MOVE N'MyBase1C' TO N'D:\SQLData\MyBase1C_Test.mdf', MOVE N'MyBase1C_log' TO N'D:\SQLData\MyBase1C_Test_log.ldf', REPLACE, RECOVERY;

Логические имена файлов (MyBase1C, MyBase1C_log) уточните командой RESTORE FILELISTONLY FROM DISK = ... — они могут отличаться от ожидаемых.

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

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

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

Порядок действий (способ через SQL)
  1. 1
    Сделайте полный backup рабочей базы с опцией COPY_ONLY
  2. 2
    Восстановите backup под новым именем с новыми путями файлов
  3. 3
    В консоли кластера 1С создайте ИБ, указав существующую БД, без флага создания
  4. 4
    Войдите в копию конфигуратором и отключите регламентные задания
  5. 5
    Проверьте доступность данных и отсутствие связи с рабочими внешними системами

Способ 2: копия через выгрузку в файл .dt

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

Войдите в рабочую базу конфигуратором с правами администратора. Меню «Администрирование» — «Выгрузить информационную базу». Укажите файл, например copy_base.dt. Пользователи на время выгрузки должны выйти из базы или будут отключены принудительно.

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

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

Backup/Restore в SQL Server

Быстро, сохраняет всё побайтово. Нужны права на SQL Server и аккуратность с путями файлов. Не подходит для переноса между разными СУБД.

Выгрузка/загрузка .dt

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

Средства репликации SQL

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

Настройка копии после создания

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

Проверьте и разорвите связи с внешними системами: настройки обмена с сайтом, ЭДО, банк-клиентами, другими базами 1С. Замените адреса на тестовые или очистите их. Также рекомендуется явно пометить базу: в параметрах информационной базы кластера можно задать сообщение о блокировке или изменить представление, а в самой конфигурации — заголовок системы, чтобы пользователи видели, что работают в копии.

Если копия создавалась через restore, проверьте владельца базы и сопоставление пользователя СУБД: иногда после восстановления на другом сервере логин теряет связь с пользователем базы (проблема «orphaned users»). Исправляется командой ALTER USER [user] WITH LOGIN = [login]; или пересозданием сопоставления.

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

Проверка результата

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

Проверьте, что блокировка регламентных заданий активна, а настройки обменов очищены или перенаправлены. Убедитесь, что в заголовке или представлении базы видно, что это копия — это защитит пользователей от случайного ввода реальных данных в тестовую среду.

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

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

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

Документы и справочники соответствуют рабочей базе на момент копирования

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

Пустые разделы или ошибки при открытии объектов

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

Блокировка включена, задания не выполняются

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

В журнале регистрации видны запуски обменов и рассылок

Связи с внешними системами
Норма

Настройки обменов очищены или указывают на тестовые контуры

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

Копия подключается к рабочему сайту, ЭДО или банку

Подключение кластера 1С
Норма

База открывается клиентом без ошибок соединения с СУБД

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

Ошибка доступа к базе данных — проверять логин и сопоставление пользователей SQL

Ограничения и частые вопросы безопасности

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

Учтите, что копия занимает столько же места, сколько рабочая база, плюс размер backup-файла. Для больших баз имеет смысл после восстановления перевести копию в простую модель восстановления (ALTER DATABASE [MyBase1C_Test] SET RECOVERY SIMPLE;) и сжать журнал — тестовой базе полный журнал транзакций обычно не нужен.

Часто задаваемые вопросы

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

Да, при способе через backup/restore: SQL Server делает резервную копию «на лету», не блокируя базу. Копия будет консистентна на момент завершения backup. Выгрузка в .dt, напротив, требует монопольного режима и завершения сеансов пользователей.

Что делать, если при подключении копии сервер 1С выдаёт ошибку доступа к базе данных?

Проверьте, что учётная запись СУБД, указанная в свойствах информационной базы, существует на SQL Server и сопоставлена с пользователем в восстановленной базе. После restore на другом сервере связь «логин — пользователь» часто разрывается; её восстанавливают командой ALTER USER или пересозданием сопоставления в SSMS.

Как скопировать базу с одного SQL Server на другой?

Оба способа подходят. Через backup/restore: скопируйте файл .bak на новый сервер и восстановите, указав локальные пути файлов. Через .dt: выгрузите на старом сервере и загрузите в новую пустую базу на новом. Способ с .dt дополнительно решает проблему несовпадения версий SQL Server, если новый сервер старше.

Нужно ли обновлять копию после обновления рабочей конфигурации?

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

Можно ли уменьшить размер тестовой копии?

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

Итог

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

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