Администрирование · 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 команда:
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 восстановление с новыми путями файлов выглядит так:
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С должен подключиться к ней, а не создавать новую пустую. После сохранения копия появится в списке баз при подключении клиента.
- 1Сделайте полный backup рабочей базы с опцией COPY_ONLY
- 2Восстановите backup под новым именем с новыми путями файлов
- 3В консоли кластера 1С создайте ИБ, указав существующую БД, без флага создания
- 4Войдите в копию конфигуратором и отключите регламентные задания
- 5Проверьте доступность данных и отсутствие связи с рабочими внешними системами
Способ 2: копия через выгрузку в файл .dt
Выгрузка в .dt — штатный механизм 1С, не зависящий от СУБД. Он медленнее и требует монопольного режима, зато результат можно загрузить на любой сервер, в другую СУБД или даже в файловый вариант. Это также единственный способ, если у вас нет прямого доступа к SQL Server.
Войдите в рабочую базу конфигуратором с правами администратора. Меню «Администрирование» — «Выгрузить информационную базу». Укажите файл, например copy_base.dt. Пользователи на время выгрузки должны выйти из базы или будут отключены принудительно.
Затем создайте в консоли кластера новую пустую информационную базу (на этот раз флаг «Создать базу данных» оставьте включённым, чтобы сервер 1С создал пустую БД на SQL Server). Войдите в неё конфигуратором и выполните «Администрирование» — «Загрузить информационную базу», указав файл .dt. После загрузки согласитесь на реструктуризацию.
Сравнение способов копирования
Быстро, сохраняет всё побайтово. Нужны права на SQL Server и аккуратность с путями файлов. Не подходит для переноса между разными СУБД.
Универсально, работает между разными СУБД и версиями платформы. Медленно на больших базах, требует монопольного доступа, не переносит настройки на уровне SQL.
Подходят для постоянных тестовых стендов с регулярным обновлением. Сложнее в настройке, избыточны для разовой копии.
Настройка копии после создания
Сразу после создания копии отключите в ней регламентные и фоновые задания, иначе тестовая база начнёт выполнять обмены, отправлять письма и выгружать данные во внешние системы наравне с рабочей. В конфигураторе: «Администрирование» — «Обслуживание» — «Блокировка регламентных заданий», либо соответствующая настройка в консоли кластера.
Проверьте и разорвите связи с внешними системами: настройки обмена с сайтом, ЭДО, банк-клиентами, другими базами 1С. Замените адреса на тестовые или очистите их. Также рекомендуется явно пометить базу: в параметрах информационной базы кластера можно задать сообщение о блокировке или изменить представление, а в самой конфигурации — заголовок системы, чтобы пользователи видели, что работают в копии.
Если копия создавалась через restore, проверьте владельца базы и сопоставление пользователя СУБД: иногда после восстановления на другом сервере логин теряет связь с пользователем базы (проблема «orphaned users»). Исправляется командой ALTER USER [user] WITH LOGIN = [login]; или пересозданием сопоставления.
Проверка результата
После регистрации базы в кластере откройте её в клиенте 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) и регистрация новой информационной базы в кластере без флага создания БД. После создания обязательно отключите регламентные задания и связи с внешними системами, проверьте данные и пометьте базу как тестовую.