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

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

Как перенести SQL-базу 1С на другой сервер

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

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

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

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

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

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

Оцените объём базы и окно простоя. Полный backup и restore базы размером в десятки гигабайт занимает ощутимое время, а в период переноса пользователи не должны работать. Запланируйте перенос на нерабочие часы и заранее уведомите сотрудников.

Завершение работы пользователей и блокировка базы

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

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

Отдельно проверьте фоновые процессы за пределами 1С: плановые задания обмена, интеграционные службы, системы резервного копирования, которые могут обращаться к базе SQL напрямую. Их тоже следует приостановить на время переноса.

Создание резервной копии на старом сервере

Основной способ переноса — штатный механизм backup/restore SQL Server. Подключитесь к старому экземпляру через SQL Server Management Studio, найдите нужную базу в обозревателе объектов, щёлкните правой кнопкой и выберите «Задачи» → «Создать резервную копию». Тип копии — «Полная», назначение — файл на диске. Укажите путь, доступный для последующего копирования на новый сервер.

Ту же операцию можно выполнить командой T-SQL, что удобно для документирования процедуры:

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

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

Скопируйте файл копии на новый сервер любым доступным способом: по сети, через внешний диск, через общую папку. Для больших баз предпочтительна прямая передача по быстрой сети — промежуточные носители добавляют время и риск повреждения файла.

Восстановление базы на новом SQL-сервере

На новом сервере откройте Management Studio, подключитесь к целевому экземпляру, щёлкните правой кнопкой по узлу «Базы данных» и выберите «Восстановить базу данных». В качестве источника укажите «Устройство» и путь к скопированному bak-файлу. Введите имя базы — рекомендуется сохранить прежнее, чтобы не путаться при регистрации в кластере.

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

После восстановления создайте учётную запись, под которой сервер 1С будет обращаться к базе. Обычно используется либо доменная учётная запись службы агента сервера 1С (проверка подлинности Windows), либо отдельный логин SQL. Этой учётной записи нужна роль владельца базы (db_owner) на восстановленной базе. Проверьте также сопоставление логина и пользователя базы: при переносе между серверами связь часто теряется, и логин остаётся «сиротой» — в этом случае проще удалить пользователя из базы и добавить логин заново с нужной ролью.

Порядок переноса данных
  1. 1
    Завершите сеансы и включите блокировку базы в консоли кластера 1С
  2. 2
    Создайте полную резервную копию базы на старом SQL Server
  3. 3
    Скопируйте bak-файл на новый сервер
  4. 4
    Восстановите базу в Management Studio с корректными путями к файлам
  5. 5
    Создайте логин и назначьте роль db_owner на восстановленной базе
  6. 6
    Перерегистрируйте информационную базу в кластере 1С на новый SQL-сервер
  7. 7
    Проверьте вход в базу и снимите блокировку сеансов

Подключение базы в кластере 1С

Сценарий 1: кластер 1С остаётся прежним

Если переезжает только SQL-сервер, а сервер приложений 1С работает на той же машине, что и раньше, всё просто. Откройте консоль кластера, найдите информационную базу, откройте её свойства и измените параметр «Сервер баз данных» на имя нового экземпляра SQL. Имя базы данных, тип СУБД и учётные данные при необходимости скорректируйте там же. После сохранения снимите блокировку сеансов — пользователи подключатся уже к новому серверу, ничего не меняя у себя.

Сценарий 2: переезжает и сервер 1С

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

После регистрации база появится в списке, но пользователи на своих компьютерах по-прежнему указывают старый сервер 1С. Им нужно обновить параметры подключения: в окне запуска 1С отредактировать базу и указать новый кластер. Если баз подключается много, удобнее распространить обновлённый файл списка баз (ibases.v8i) через групповые политики или общий сетевой ресурс.

Маршрут решения

Как выбрать способ переноса

Новый SQL Server той же версии или новееИспользуйте backup/restore — это быстро и сохраняет всё как есть
Новый SQL Server старее исходногоВыгрузите базу в dt-файл через конфигуратор и загрузите на новом месте
Меняется и тип СУБД (например, переход на PostgreSQL)Перенос возможен только через выгрузку/загрузку dt-файла
Нужно минимальное окно простоя при большой базеРассмотрите перенос через зеркалирование или Always On с последующей отсечкой

Альтернатива: перенос через выгрузку в dt-файл

Выгрузка информационной базы в файл .dt через конфигуратор («Администрирование» → «Выгрузить информационную базу») — универсальный метод, не зависящий от версий и типа СУБД. Он незаменим при понижении версии SQL Server, смене СУБД или когда нет прямого доступа к файловой системе серверов.

У метода есть серьёзные ограничения. Выгрузка и загрузка dt выполняются значительно медленнее, чем backup/restore, — для больших баз это часы. Кроме того, dt-файл не переносит настройки на уровне SQL: права, индексы, созданные вручную, параметры базы данных. Для типовой базы среднего размера это приемлемый путь, для крупной производственной системы — запасной вариант.

Типичные ошибки при переносе
01
Восстановление базы без проверки путей к файлам — restore падает с ошибкой, если каталогов старого сервера нет на новом
02
Забытый логин SQL или потерянная связь логина с пользователем базы — сервер 1С не может подключиться, хотя база восстановлена
03
Создание базы в кластере с включённым флагом «Создать базу данных при отсутствии» — риск затереть восстановленную базу пустой
04
Перенос без блокировки сеансов — пользователи продолжают писать данные в старую базу после создания копии
05
Удаление старой базы до проверки новой — при обнаружении проблемы откатиться уже не к чему
06
Несовпадение версий платформы 1С на старом и новом сервере приложений — база не открывается или требует конвертации

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

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

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

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

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

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

Вход в базу под пользователем
Норма

Авторизация проходит, открываются разделы и документы

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

Ошибка соединения с СУБД или «информационная база не обнаружена»

Данные на новом сервере
Норма

Количество документов и остатки совпадают со старой базой

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

Отсутствуют свежие документы — копия была снята до завершения сеансов

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

Задания выполняются по расписанию без ошибок в журнале

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

Задания не стартуют или падают с ошибками доступа

Права на базе SQL
Норма

Сервер 1С работает под выделенной учётной записью с db_owner

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

Ошибки доступа в журнале SQL Server или вход под sa

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

Можно ли перенести базу 1С простым копированием mdf-файлов?

Технически да, через отсоединение базы (Detach) на старом сервере, копирование mdf/ldf-файлов и присоединение (Attach) на новом. Это рабочий метод, но backup/restore предпочтительнее: он не требует остановки базы на время копирования файлов и включает проверку целостности. Копирование файлов оправдано, когда нужно перенести много баз сразу.

Что делать, если новый SQL Server старее текущего?

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

Нужно ли заново настраивать пользователей 1С после переноса?

Нет. Список пользователей информационной базы, их роли и пароли хранятся внутри самой базы данных и переносятся вместе с ней. Заново настраивать придётся только подключение на клиентских компьютерах, если изменился адрес сервера 1С, и административные учётные записи кластера, если переехал и он.

Сколько времени занимает перенос базы?

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

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

Полностью без простоя — сложно. Можно сократить окно до минимума: заранее восстановить на новом сервере полную копию в режиме NORECOVERY, а в момент переключения снять короткую копию журнала транзакций, накатить её и перевести базу в рабочий режим. Это требует модели восстановления Full и аккуратности, но сокращает простой с часов до минут.

Что делать, если после переноса 1С выдаёт ошибку соединения с СУБД?

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

Итог

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

Перенос SQL-базы 1С — это backup на старом сервере, restore на новом и перерегистрация базы в кластере 1С с новым адресом СУБД. Перед началом завершите сеансы и заблокируйте базу, после восстановления проверьте логины и права, а старую базу сохраняйте до полной проверки новой.