Перенос файловой базы 1С на SQL-сервер: от выгрузки до настройки
Содержание
Файловую базу
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. Проверьте целостность
Откройте базу в Конфигураторе в режиме монопольного доступа. Монопольный доступ нужен именно для тестирования и исправления. Выберите Администрирование → Тестирование и исправление.
Рекомендуемые настройки:
- Включите проверку логической целостности информационной базы.
- Включите проверку ссылочной целостности.
- Включите реструктуризацию таблиц информационной базы.
- Режим — «Тестирование и исправление», при ошибках — «Создавать объекты» и «Удалять неисправимые объекты» только если вы понимаете последствия.
После проверки изучите протокол. Если нашлись неисправимые ошибки, не переносите базу как есть: сначала разберитесь с ними, иначе перенесёте проблему на новый сервер.
Шаг 3. Подчистите лишнее
Перед выгрузкой стоит убрать то, что только раздувает базу:
- 🧹 помеченные на удаление объекты через обработку «Удаление помеченных объектов» (в Конфигураторе:
Администрирование → Удаление помеченных объектов); - 🧹 старые записи журнала регистрации, если они не нужны для аудита;
- 🧹 устаревшие сеансы и неиспользуемых пользователей.
Удаление помеченных объектов необратимо. Делайте его после резервной копии из шага 1, а лучше ещё и согласуйте с главным бухгалтером.
Выгрузка информационной базы в файл .dt
Выгрузка делается в Конфигураторе. База должна быть открыта в монопольном режиме, пользователей в ней быть не должно.
- Запустите 1С в режиме Конфигуратор, выберите файловую базу.
- Откройте
Администрирование → Выгрузить информационную базу. - Укажите имя и путь файла
.dt. Папка должна быть на локальном диске с запасом места, не на «сетевой шаре» с нестабильным соединением. - Дождитесь окончания. Размер файла запомните: он понадобится, чтобы убедиться, что загрузка прошла полностью.
Файл .dt содержит данные, конфигурацию, список пользователей и их права. То есть учётные записи 1С переедут вместе с базой, переносить их вручную не нужно.
Выгружайте .dt непосредственно перед загрузкой, а не накануне. Если пользователи успеют внести данные в файловую базу после выгрузки, они окажутся потеряны.
Создание пустой базы на сервере 1С
Пустую базу создают в кластере сервера 1С. Есть два пути: через консоль администрирования кластера или через окно запуска 1С. Второй проще для небольшой установки.
Через окно запуска
- В окне запуска 1С нажмите
Добавить, выберите «Создание новой информационной базы», затем «Создание информационной базы без конфигурации». - Тип расположения — «На сервере 1С:Предприятия».
- Укажите кластер серверов
(имя компьютера и порт, по умолчанию
1541) и имя базы в кластере. - Тип СУБД — PostgreSQL или Microsoft SQL Server, а затем адрес сервера СУБД, имя базы, пользователь и пароль.
- Отметьте «Создать базу данных в случае её отсутствия».
- Для MS SQL Server оставьте смещение дат равным 2000. Для PostgreSQL это поле не используется.
- Блокировку регламентных заданий включайте, если хотите сначала загрузить данные, а потом уже запускать задания.
Через консоль администрирования
В консоли администрирования серверов 1С раскройте кластер, найдите узел «Информационные базы» и создайте новую. Набор полей тот же. Консоль удобна, когда нужно сразу задать лимиты, блокировку соединений и параметры безопасности.
Если база в кластере уже есть, а в СУБД нет (или наоборот), 1С выдаст ошибку подключения. Следите, чтобы имя базы в кластере и имя базы в СУБД не путались.
Загрузка данных из .dt в серверную базу
Теперь загрузите выгруженный файл в созданную пустую базу.
- Запустите 1С в режиме Конфигуратор с выбором новой серверной базы.
- Откройте
Администрирование → Загрузить информационную базу. - Выберите файл
.dt. Платформа попросит подтвердить замену данных. Согласитесь: база и так пустая. - Дождитесь завершения. На больших базах загрузка идёт заметно дольше выгрузки, потому что платформа заполняет таблицы и строит индексы в СУБД.
После загрузки откройте 1С в обычном режиме 1С:Предприятие, войдите под своим пользователем и сравните ключевые показатели с файловой базой.
Что сверить
| Что | Как проверить |
|---|---|
| Оборотно-сальдовая ведомость | Сформируйте за один и тот же период в обеих базах, итоги должны совпасть |
| Остатки на складах | Отчёт «Ведомость по товарам на складах» на текущую дату |
| Число документов | Количество в списках ключевых документов за последний месяц |
| Пользователи и роли | Зайдите под 2-3 разными пользователями, проверьте их права |
Если итоги не сходятся, не вводите базу в работу. Сделайте повторную проверку целостности в файловой базе и выгрузите .dt заново.
Настройка пользователей, прав и подключения клиентов
Пользователи 1С переехали с .dt, но есть ещё три уровня доступа, о которых часто забывают.
Три уровня доступа
- 👤 Пользователи 1С: список, роли и пароли в самой информационной базе. Они уже на месте.
- 🛡️ Пользователь СУБД, под которым сервер 1С подключается к базе. Это не человек. Пароль к нему должен знать только администратор, а у обычных пользователей к СУБД доступа быть не должно.
- 🖧 Учётная запись службы сервера 1С в операционной системе. У неё должны быть права на каталоги сервера (кластер, журналы).
Не давайте бухгалтерам прямого доступа к SQL Server или PostgreSQL. Любое изменение через СУБД в обход 1С ломает целостность и не покрывается лицензией на поддержку.
Перенаправление пользователей на новую базу
Рабочие места ещё смотрят на файловую базу. Чтобы пользователи не вносили данные в старую:
- На рабочих местах добавьте в список новую серверную базу , удалите старую запись.
- Старый каталог файловой базы переместите или переименуйте, а лучше закройте на него доступ. Сделайте это только после контрольных сверок.
- Если используется веб-доступ, перепубликуйте базу на веб-сервере уже с серверным режимом.
Оптимизация и регламентные работы после перехода
Сама по себе замена файлового режима на SQL ускорение даёт, но не безграничное. Без обслуживания СУБД со временем начинает тормозить.
Регламентные операции СУБД
- 📊 Обновление статистики — раз в сутки, лучше ночью. Если планировщик запросов работает по устаревшей статистике, он выбирает плохие планы, и отчёты замедляются в разы.
- 🔄 Перестроение или реорганизация индексов — раз в неделю или раз в месяц, в зависимости от интенсивности работы. Для PostgreSQL аналогом служит очистка (
VACUUM) и анализ (ANALYZE). Автоочистка обычно включена, но проверьте это. - 💾 Резервное копирование — полная копия ночью, плюс копии журнала транзакций в течение дня, если модель восстановления в MS SQL это допускает. Файловую папку
.dtкак единственную копию не считайте.
Если вы используете модель восстановления «Полная» в MS SQL и не копируете журнал, он будет расти до тех пор, пока не заполнит диск. Выберите одно из двух: либо регулярные копии журнала, либо простую модель восстановления (с потерей возможности восстановить базу на любой момент).
Параметры, которые чаще всего «забывают»
- 🧠 Память СУБД. MS SQL по умолчанию занимает почти всё, что дадут, и это конфликтует с сервером 1С на одной машине. Ограничьте максимальную память сервера СУБД, оставив системе и 1С как минимум четверть оперативной памяти.
- ⚡ Диски. Базу и журнал транзакций держите на SSD. Для tempdb в MS SQL тоже нужен быстрый диск.
- 🔌 Сеть между серверами. Сервер 1С и СУБД должны находиться в одной сети с минимальной задержкой.
Что делать с регламентными заданиями 1С
В режиме клиент-сервер регламентные задания выполняет сервер, а не клиент. Проверьте в базе, что обмены, обновление индекса полнотекстового поиска и сворачивание итогов запущены и не ругаются в журнале регистрации. В файловой базе их выполнял любой пользователь, а теперь их выполняет сервер от имени заданного пользователя.
Для сравнения скорости возьмите три операции: проведение пакета документов, формирование ОСВ за год и закрытие месяца. Замерьте время до и после переноса: это лучшая проверка, что переезд действительно что-то дал.
Если не получилось или нужно вернуться назад
Откат прост, пока вы не переключили пользователей на новую базу: просто продолжайте работать с файловой. Если уже поработали на SQL и хотите вернуться, выгрузите .dt из серверной базы и загрузите его в файловую.
Ошибки при переносе обычно такие:
Частые вопросы
Можно ли перевести базу на SQL без выгрузки в .dt?
Переедут ли пользователи и их права?
.dt.Можно ли вернуться с SQL на файловый режим?
.dt из серверной базы и загрузите его в пустую файловую. Для этого достаточно Конфигуратора.