Перенос файловой базы 1С на SQL-сервер: от выгрузки до настройки

· 10 мин

Содержание

Файловую базу 1С на SQL не конвертируют «на месте». Её выгружают в файл .dt, на сервере создают пустую базу и загружают в неё этот файл. Файловый вариант при этом остаётся нетронутым: он ваш страховочный план. Весь перенос обычно занимает от получаса до нескольких часов, в зависимости от размера базы.

Перевод оправдан, когда в базе одновременно работает больше 10-15 человек, файл 1Cv8.1CD перевалил за 10-20 ГБ, а проведение документов и формирование отчётов заметно тормозят. Дополнительный плюс — блокировки на уровне записей вместо блокировки всей базы и нормальное резервное копирование средствами СУБД.

Ниже порядок действий для платформы 8.3: от выбора СУБД до регламентных заданий.

Что потребуется перед переносом: сервер, СУБД и лицензии

Клиент-серверный режим состоит из трёх частей: сервер 1С:Предприятия (кластер), СУБД и клиентские рабочие места. Все три можно поставить на одну машину, но так делают только для небольших баз. Для 20+ пользователей серверы приложений и СУБД разносят.

Какую СУБД выбрать

СУБДКогда подходитНа что смотреть
PostgreSQLНет бюджета на лицензии СУБД, нужен Linux или WindowsНужна сборка, совместимая с вашей платформой 1С; подходящие версии указаны в документации к платформе
Microsoft SQL ServerУже есть лицензия, команда знает MS SQL, большие базыЛицензия на сервер и на доступ; редакция Express ограничена по объёму базы и памяти
Другие поддерживаемые СУБДКорпоративные стандартыСписок зависит от версии платформы, проверяйте его до установки

Номера версий СУБД не запоминайте и не берите из старых статей. Откройте документацию к вашей версии платформы и сверьте таблицу поддерживаемых СУБД. Несовместимая сборка PostgreSQL — самая частая причина ошибок на этапе создания базы.

Что проверить заранее

  • 🖥️ Сервер 1С установлен, служба запущена, кластер создан. Номер версии платформы на сервере совпадает с клиентами или не ниже, чем у них.
  • 🗄️ СУБД установлена и принимает подключения с сервера 1С по сети. Известны логин и пароль пользователя СУБД с правом создавать базы.
  • 🔑 Лицензии: серверная лицензия на кластер и клиентские лицензии на рабочие места. Без них база на сервере не запустится.
  • 💾 Место на диске: размер файла .dt обычно в разы меньше 1Cv8.1CD, но база в СУБД занимает больше, чем .dt. Закладывайте объём базы в 1,5-2 раза больше файлового варианта плюс место под журнал транзакций и резервные копии.

Пример. Файл 1Cv8.1CD весит 12 ГБ. Выгрузка .dt даст порядка 2-4 ГБ. База в СУБД займёт 15-24 ГБ, а на копии и журналы нужно ещё столько же. Итого диск на 60-80 ГБ — минимум для комфортной работы.

Подготовка файловой базы: проверка, копия, чистка

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

Шаг 1. Сделайте резервную копию файловой базы

Закройте 1С у всех пользователей. Скопируйте весь каталог базы (с файлом 1Cv8.1CD) в другое место. Это не .dt, а точная копия, к которой всегда можно вернуться.

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

Шаг 2. Проверьте целостность

Откройте базу в Конфигураторе в режиме монопольного доступа. Монопольный доступ нужен именно для тестирования и исправления. Выберите Администрирование → Тестирование и исправление.

Рекомендуемые настройки:

  1. Включите проверку логической целостности информационной базы.
  2. Включите проверку ссылочной целостности.
  3. Включите реструктуризацию таблиц информационной базы.
  4. Режим — «Тестирование и исправление», при ошибках — «Создавать объекты» и «Удалять неисправимые объекты» только если вы понимаете последствия.

После проверки изучите протокол. Если нашлись неисправимые ошибки, не переносите базу как есть: сначала разберитесь с ними, иначе перенесёте проблему на новый сервер.

Шаг 3. Подчистите лишнее

Перед выгрузкой стоит убрать то, что только раздувает базу:

  • 🧹 помеченные на удаление объекты через обработку «Удаление помеченных объектов» (в Конфигураторе: Администрирование → Удаление помеченных объектов);
  • 🧹 старые записи журнала регистрации, если они не нужны для аудита;
  • 🧹 устаревшие сеансы и неиспользуемых пользователей.

Удаление помеченных объектов необратимо. Делайте его после резервной копии из шага 1, а лучше ещё и согласуйте с главным бухгалтером.

Выгрузка информационной базы в файл .dt

Выгрузка делается в Конфигураторе. База должна быть открыта в монопольном режиме, пользователей в ней быть не должно.

  1. Запустите 1С в режиме Конфигуратор, выберите файловую базу.
  2. Откройте Администрирование → Выгрузить информационную базу.
  3. Укажите имя и путь файла .dt. Папка должна быть на локальном диске с запасом места, не на «сетевой шаре» с нестабильным соединением.
  4. Дождитесь окончания. Размер файла запомните: он понадобится, чтобы убедиться, что загрузка прошла полностью.

Файл .dt содержит данные, конфигурацию, список пользователей и их права. То есть учётные записи 1С переедут вместе с базой, переносить их вручную не нужно.

Выгружайте .dt непосредственно перед загрузкой, а не накануне. Если пользователи успеют внести данные в файловую базу после выгрузки, они окажутся потеряны.

Создание пустой базы на сервере 1С

Пустую базу создают в кластере сервера 1С. Есть два пути: через консоль администрирования кластера или через окно запуска 1С. Второй проще для небольшой установки.

Через окно запуска

  1. В окне запуска 1С нажмите Добавить, выберите «Создание новой информационной базы», затем «Создание информационной базы без конфигурации».
  2. Тип расположения — «На сервере 1С:Предприятия».
  3. Укажите кластер серверов (имя компьютера и порт, по умолчанию 1541) и имя базы в кластере.
  4. Тип СУБД — PostgreSQL или Microsoft SQL Server, а затем адрес сервера СУБД, имя базы, пользователь и пароль.
  5. Отметьте «Создать базу данных в случае её отсутствия».
  6. Для MS SQL Server оставьте смещение дат равным 2000. Для PostgreSQL это поле не используется.
  7. Блокировку регламентных заданий включайте, если хотите сначала загрузить данные, а потом уже запускать задания.

Через консоль администрирования

В консоли администрирования серверов 1С раскройте кластер, найдите узел «Информационные базы» и создайте новую. Набор полей тот же. Консоль удобна, когда нужно сразу задать лимиты, блокировку соединений и параметры безопасности.

Если база в кластере уже есть, а в СУБД нет (или наоборот), 1С выдаст ошибку подключения. Следите, чтобы имя базы в кластере и имя базы в СУБД не путались.

Загрузка данных из .dt в серверную базу

Теперь загрузите выгруженный файл в созданную пустую базу.

  1. Запустите 1С в режиме Конфигуратор с выбором новой серверной базы.
  2. Откройте Администрирование → Загрузить информационную базу.
  3. Выберите файл .dt. Платформа попросит подтвердить замену данных. Согласитесь: база и так пустая.
  4. Дождитесь завершения. На больших базах загрузка идёт заметно дольше выгрузки, потому что платформа заполняет таблицы и строит индексы в СУБД.

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

Что сверить

ЧтоКак проверить
Оборотно-сальдовая ведомостьСформируйте за один и тот же период в обеих базах, итоги должны совпасть
Остатки на складахОтчёт «Ведомость по товарам на складах» на текущую дату
Число документовКоличество в списках ключевых документов за последний месяц
Пользователи и ролиЗайдите под 2-3 разными пользователями, проверьте их права

Если итоги не сходятся, не вводите базу в работу. Сделайте повторную проверку целостности в файловой базе и выгрузите .dt заново.

Настройка пользователей, прав и подключения клиентов

Пользователи 1С переехали с .dt, но есть ещё три уровня доступа, о которых часто забывают.

Три уровня доступа

  • 👤 Пользователи 1С: список, роли и пароли в самой информационной базе. Они уже на месте.
  • 🛡️ Пользователь СУБД, под которым сервер 1С подключается к базе. Это не человек. Пароль к нему должен знать только администратор, а у обычных пользователей к СУБД доступа быть не должно.
  • 🖧 Учётная запись службы сервера 1С в операционной системе. У неё должны быть права на каталоги сервера (кластер, журналы).

Не давайте бухгалтерам прямого доступа к SQL Server или PostgreSQL. Любое изменение через СУБД в обход 1С ломает целостность и не покрывается лицензией на поддержку.

Перенаправление пользователей на новую базу

Рабочие места ещё смотрят на файловую базу. Чтобы пользователи не вносили данные в старую:

  1. На рабочих местах добавьте в список новую серверную базу , удалите старую запись.
  2. Старый каталог файловой базы переместите или переименуйте, а лучше закройте на него доступ. Сделайте это только после контрольных сверок.
  3. Если используется веб-доступ, перепубликуйте базу на веб-сервере уже с серверным режимом.

Оптимизация и регламентные работы после перехода

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

Регламентные операции СУБД

  • 📊 Обновление статистики — раз в сутки, лучше ночью. Если планировщик запросов работает по устаревшей статистике, он выбирает плохие планы, и отчёты замедляются в разы.
  • 🔄 Перестроение или реорганизация индексов — раз в неделю или раз в месяц, в зависимости от интенсивности работы. Для PostgreSQL аналогом служит очистка (VACUUM) и анализ (ANALYZE). Автоочистка обычно включена, но проверьте это.
  • 💾 Резервное копирование — полная копия ночью, плюс копии журнала транзакций в течение дня, если модель восстановления в MS SQL это допускает. Файловую папку .dt как единственную копию не считайте.

Если вы используете модель восстановления «Полная» в MS SQL и не копируете журнал, он будет расти до тех пор, пока не заполнит диск. Выберите одно из двух: либо регулярные копии журнала, либо простую модель восстановления (с потерей возможности восстановить базу на любой момент).

Параметры, которые чаще всего «забывают»

  • 🧠 Память СУБД. MS SQL по умолчанию занимает почти всё, что дадут, и это конфликтует с сервером 1С на одной машине. Ограничьте максимальную память сервера СУБД, оставив системе и 1С как минимум четверть оперативной памяти.
  • ⚡ Диски. Базу и журнал транзакций держите на SSD. Для tempdb в MS SQL тоже нужен быстрый диск.
  • 🔌 Сеть между серверами. Сервер 1С и СУБД должны находиться в одной сети с минимальной задержкой.

Что делать с регламентными заданиями 1С

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

Для сравнения скорости возьмите три операции: проведение пакета документов, формирование ОСВ за год и закрытие месяца. Замерьте время до и после переноса: это лучшая проверка, что переезд действительно что-то дал.

Если не получилось или нужно вернуться назад

Откат прост, пока вы не переключили пользователей на новую базу: просто продолжайте работать с файловой. Если уже поработали на SQL и хотите вернуться, выгрузите .dt из серверной базы и загрузите его в файловую.

Ошибки при переносе обычно такие:

Диагностика: выберите симптом

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

Можно ли перевести базу на SQL без выгрузки в .dt?
Штатного способа нет. Конвертация файл→SQL всегда проходит через выгрузку и загрузку информационной базы.
Переедут ли пользователи и их права?
Да. Список пользователей, роли и настройки хранятся в самой информационной базе и выгружаются в .dt.
Можно ли вернуться с SQL на файловый режим?
Можно. Выгрузите .dt из серверной базы и загрузите его в пустую файловую. Для этого достаточно Конфигуратора.
Нужно ли покупать отдельные лицензии?
Нужна серверная лицензия 1С и клиентские лицензии на рабочие места. Если выбрали MS SQL, добавится лицензия на СУБД. PostgreSQL бесплатен.
Сколько простоя потребуется?
Простой равен времени выгрузки, переноса файла и загрузки. Для базы в 5-10 ГБ закладывайте несколько часов, лучше перенос делать вечером или в выходной.