Перенос базы 1С с файлового варианта на Microsoft SQL Server

· 9 мин

Содержание

Файловая база тормозит, когда в ней работают больше 5–10 человек, а размер перевалил за несколько гигабайт. Решение известное: перевести её на клиент-серверный вариант, где данные хранит Microsoft SQL Server, а обработкой занимается сервер 1С:Предприятия. Развернуть базу 1С на сервере SQL можно за один рабочий вечер, если заранее подготовить окружение и выгрузку.

Прямой «конвертации» файла 1Cv8.1CD в SQL нет. Схема всегда одна: выгрузить базу в файл .dt, создать пустую базу на сервере, загрузить в неё выгрузку. Ниже — весь путь по шагам, с настройками, которые влияют на скорость.

Что нужно подготовить до начала

Перед переносом проверьте четыре вещи. Каждая из них, если её пропустить, стоит часа простоя.

  • 🖥️ Сервер 1С:Предприятия установлен и запущен как служба. Версия платформы на сервере должна совпадать с версией, на которой работают клиенты, либо быть не ниже.
  • 🗄️ Microsoft SQL Server установлен на той же машине или на отдельной. Для рабочей базы лучше отдельный сервер или хотя бы отдельные диски под данные и журнал.
  • 🔑 Лицензии на серверный режим. Клиентские лицензии для файлового режима подходят, но серверная лицензия — отдельная, без неё кластер не запустит базу.
  • 💾 Свободное место: под .dt нужно примерно 20–40% от размера файловой базы, под саму базу в SQL — размер файловой с запасом ×1,5–2.

Перенос делайте не на «живой» базе без копии. Остановите работу пользователей, сохраните копию каталога с 1Cv8.1CD и только потом выгружайте данные.

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

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

ВариантКогда подходитОграничения
SQL Server ExpressТест, небольшая база, 3–5 пользователейЛимит размера базы около 10 ГБ, ограничение по памяти и ядрам
SQL Server StandardОсновной вариант для большинства организацийПлатная лицензия
SQL Server EnterpriseКрупные базы, много пользователей, отказоустойчивостьДорого, нужен только при реальной нагрузке

Если база уже близка к 10 ГБ, Express не вариант: упрётесь в лимит через несколько месяцев.

Настройка самого SQL Server

Ставьте SQL Server с компонентом «Компонент Database Engine». Остальное для 1С не нужно.

  1. На шаге выбора сортировки задайте Cyrillic_General_CI_AS. Это стандартная сортировка для баз 1С с русской кириллицей. Сменить её после установки сложно.
  2. Режим проверки подлинности — смешанный (Windows и SQL Server). Сервер 1С подключается к СУБД под SQL-логином, поэтому режим «только Windows» не подойдёт.
  3. Задайте пароль встроенной учётной записи sa и храните его в менеджере паролей.
  4. Включите протокол TCP/IP в «Диспетчере конфигурации SQL Server» и перезапустите службу СУБД.

После установки пройдитесь по параметрам сервера. Эти три дают заметный эффект:

  • Максимальный объём памяти сервера (max server memory). Если SQL Server делит машину с сервером 1С, оставьте операционной системе и 1С минимум 30–40% оперативной памяти. Без ограничения СУБД забирает всё.
  • Максимальная степень параллелизма (max degree of parallelism). Для баз 1С рекомендуют значение 1: запросы 1С короткие, а параллельное выполнение чаще мешает.
  • Каталоги по умолчанию для файлов данных и журнала. Разнесите их на разные диски — это дешёвый способ ускорить запись.

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

Создание пустой базы данных в SQL Server

Есть два пути, и оба рабочие.

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

Путь 2. Базу создаёт администратор вручную. Это нужно, когда нужны особые параметры файлов: начальный размер, шаг роста, расположение на дисках. В SQL Server Management Studio:

  1. Правый клик по «Базы данных» → «Создать базу данных».
  2. Укажите имя, например buh_prod.
  3. На вкладке «Параметры» проверьте сортировку: Cyrillic_General_CI_AS.
  4. Задайте начальные размеры файла данных и журнала. Если база будет весить 20 ГБ, не оставляйте 8 МБ с шагом 1 МБ: сервер потратит кучу времени на постоянное расширение файла.
  5. Создайте SQL-логин для 1С и дайте ему на эту базу роль db_owner.

Модель восстановления выбирайте осознанно. Simple — журнал не копится, но восстановиться можно только на момент последней полной копии. Full — можно восстановить на любую минуту, но тогда обязательно настройте резервное копирование журнала, иначе он разрастётся до размера диска.

Регистрация базы в кластере серверов 1С

Теперь база должна появиться в кластере. Сделать это можно из окна запуска 1С или из консоли администрирования серверов.

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

  1. В окне запуска нажмите «Добавить».
  2. Выберите «Создание новой информационной базы» → «Создание информационной базы без конфигурации».
  3. Введите имя базы, как она будет называться в списке.
  4. Тип расположения — «На сервере 1С:Предприятия».
  5. Заполните параметры:
ПолеЧто вписать
Кластер серверовАдрес сервера, например srv-1c (порт по умолчанию 1541)
Имя в кластереИмя базы в кластере, латиницей без пробелов
Защищённое соединение«Выключено», если TLS не настраивали
Тип СУБДMS SQL Server
Сервер баз данныхИмя или адрес SQL Server
Имя базы данныхИмя из предыдущего раздела
Пользователь сервера БДSQL-логин
Смещение дат2000
Создать БД при отсутствииФлажок, если база не создана вручную

Про смещение дат: для SQL Server используется значение 2000, оно позволяет хранить даты в диапазоне, нужном 1С. Не ставьте 0, если не знаете, зачем.

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

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

Чтобы клиенты увидели сервер, на файрволе сервера 1С должны быть открыты порты: 1540 (агент), 1541 (менеджер кластера) и диапазон 1560–1591 для рабочих процессов. Порт SQL Server — 1433, но он нужен только между сервером 1С и СУБД, клиентам наружу его открывать не надо.

Загрузка данных: из файловой базы в серверную

Это и есть «конвертация». Шаги делаются на машине с платформой, на которой удобно работать с обеими базами.

Выгрузка из файловой базы

  1. Закройте всех пользователей из файловой базы.
  2. Запустите её в режиме «Конфигуратор» от имени администратора.
  3. Меню «Администрирование» → «Выгрузить информационную базу».
  4. Сохраните .dt на диск с достаточным местом. Имя файла лучше сделать говорящим, например buh_2026-10-07.dt.

Выгрузка идёт от нескольких минут до часа в зависимости от объёма. Не прерывайте её, не закрывайте конфигуратор.

Загрузка в серверную базу

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

Загрузка перезаписывает все данные целевой базы. Поэтому в пустую заготовку её грузить можно, в рабочую с данными — нет.

Загрузка занимает обычно дольше выгрузки. Для базы в 10 ГБ закладывайте 1–2 часа. После загрузки запустите базу в обычном режиме «1С:Предприятие» и проверьте оборотно-сальдовую ведомость за последний закрытый период: сумма должна сойтись с файловой копией.

Проверка после переноса
Выполнено: 0 / 5

Пользователи и права: что настроить в 1С и в SQL

Здесь два независимых слоя, и путают их чаще всего.

Пользователи 1С переносятся вместе с .dt: список, роли, пароли. Их менять не нужно. Заходят они по-прежнему со своими логинами через окно запуска.

Пользователи SQL — это технические учётные записи для сервера 1С. Люди с ними не работают. Рекомендация:

  • 👤 Для каждой серверной базы — свой SQL-логин с ролью db_owner только на эту базу. Если логин общий для всех баз, компрометация одной вскрывает все.
  • 🚫 Не используйте sa для рабочего подключения. Он нужен только для первичной настройки.
  • 🔒 Пароль логина храните отдельно. Сменить его потом можно в свойствах информационной базы в консоли администрирования, не пересоздавая базу.

Чтобы администраторы могли управлять кластером из консоли, добавьте для них учётные записи администратора кластера или администратора центрального сервера. Это отдельные права в самом сервере 1С, к SQL они отношения не имеют.

Выдача прав пользователям базы — привычным путём: «Администрирование» → «Настройки пользователей и прав» → «Пользователи».

Если нужно ограничить, кто вообще видит базу в списке на сервере, используйте списки баз для конкретных пользователей. Но надёжнее ограничивать именно права внутри 1С, а не прятать базу.

Что настроить после переноса, чтобы база не тормозила

Серверная база не быстрее файловой «сама по себе». Выигрыш даёт грамотное обслуживание.

Регламентные операции SQL

Раз в неделю, лучше ночью, выполняйте:

  1. Обновление статистики по всем таблицам. Устаревшая статистика — главная причина «внезапно» медленных отчётов.
  2. Перестроение или реорганизацию индексов там, где фрагментация выше 30%.
  3. Резервное копирование: полная копия раз в сутки; при модели Full — копии журнала каждые 15–60 минут.

Всё это настраивается планом обслуживания SQL Server в Management Studio или заданиями агента SQL Server.

Регламентные задания 1С

В свойствах базы убедитесь, что регламентные задания разрешены. Они сворачивают итоги регистров, собирают служебные данные, и без них отчёты со временем замедляются. При тестовом разворачивании бывает, что блокировку включили «на всякий случай» и забыли снять.

Журнал и тестирование

  • Раз в месяц запускайте «Тестирование и исправление» с проверкой логической целостности. Монопольный доступ потребуется, так что делайте это в нерабочее время.
  • Следите за размером журнала транзакций SQL. Резкий рост — признак того, что копии журнала не снимаются.
  • Уровень изоляции и блокировки — отдельная тема. Если появились жалобы на «таймаут блокировки», смотрите технологический журнал и консоль кластера, а не гадайте.

Разбор типичных сбоев при развёртывании

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

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

Можно ли просто скопировать файл 1Cv8.1CD в SQL Server?
Нет. Файл базы и структура таблиц SQL несовместимы. Переносить нужно только через выгрузку и загрузку .dt.
Нужна ли отдельная лицензия на сервер 1С?
Да. Серверный режим работает по своим лицензиям, клиентские файловые лицензии его не заменяют. Уточните вариант в договоре с поставщиком.
Можно ли держать SQL Server и сервер 1С на одной машине?
Можно, для небольших баз это обычная схема. Тогда ограничьте память SQL Server, чтобы 1С и операционная система не остались без ресурсов.
Как вернуть базу обратно в файловый вариант?
Выгрузите серверную базу в .dt, создайте пустую файловую и загрузите выгрузку туда. Это тот же механизм в обратную сторону.
Сколько простоя закладывать на перенос?
Для базы до 5 ГБ хватает вечера. Для 20–30 ГБ планируйте выходные: выгрузка, загрузка и проверка вместе занимают несколько часов.