Перевод базы 1С из файлового режима на MS SQL Server: сервер, права, перенос данных и настройка

· 11 мин

Содержание

Подключить 1С к SQL Server напрямую нельзя: между клиентом и СУБД всегда стоит сервер 1С:Предприятия. Схема такая: на сервер ставите MS SQL Server и сервер 1С, в консоли кластера создаёте информационную базу с типом СУБД MSSQLServer, затем выгружаете файловую базу в .dt и загружаете её в новую. Сама смена режима работы занимает час-два, большую часть времени съедает подготовка.

Инструкция общая для платформы 8.3 и любой типовой конфигурации: БП 3.0, ЗУП 3.1, УТ 11 и других. Конфигурация на перенос не влияет, путь в Конфигураторе везде одинаковый.

Что подготовить до перехода на SQL Server

Клиент-серверный режим — это три компонента и одна лицензия. Без любого из них база не запустится.

КомпонентЧто нужноКомментарий
🖥 Сервер 1С:ПредприятияТа же версия платформы, что у клиентов, 64-разряднаяНомер версии сервера и клиента должен совпадать полностью
🗄 MS SQL ServerStandard или ExpressExpress ограничивает базу 10 ГБ и использует мало памяти
🔑 Лицензия сервера 1СОтдельная от клиентскихБез неё сервер не отдаст сеанс клиенту
💾 Свободное местоВ 2–3 раза больше файла 1Cv8.1CDПод файлы базы, журнал транзакций и бэкапы

Сервер 1С и SQL Server можно держать на одной машине. Для 10–30 пользователей так и делают: меньше сетевых задержек, проще администрировать. Разносить по разным серверам имеет смысл, когда памяти одного не хватает обоим.

💡 Ориентир по памяти для базы на 20 пользователей: от 16 ГБ RAM на совмещённом сервере. Из них SQL Server получает примерно половину, остальное — рабочие процессы 1С и система.

Установка MS SQL Server

При установке SQL Server три настройки менять потом дорого:

  1. Компонент. Достаточно «Службы ядра СУБД» (Database Engine Services). Службы аналитики и отчётов 1С не нужны.
  2. Параметры сортировки (collation). Выберите Cyrillic_General_CI_AS. Если у экземпляра будет другая сортировка, кириллица в запросах к временным таблицам может сравниваться неправильно.
  3. Режим проверки подлинности. Включите смешанный режим (SQL Server и Windows). 1С чаще всего подключается к СУБД под SQL-логином, и в режиме «только Windows» такой логин не войдёт.

Затем поставьте SQL Server Management Studio (SSMS) — она устанавливается отдельно и нужна для логинов, бэкапов и обслуживания.

Установка сервера 1С

В установщике платформы отметьте компонент «Сервер 1С:Предприятия» и «Администрирование сервера 1С:Предприятия». Установите сервер как службу Windows: установщик предложит создать пользователя USR1CV8 или указать существующего.

После установки зарегистрируйте консоль администрирования. Запустите от имени администратора утилиту регистрации из меню «Пуск» (ярлык «Регистрация утилиты администрирования серверов») — она регистрирует radmin.dll нужной версии. Без этого консоль кластера не откроется или откроется с ошибкой.

Логин и права для 1С в SQL Server

Сервер 1С ходит в СУБД под одним логином. Его нужно создать заранее в SSMS.

  1. Откройте SSMS, подключитесь к экземпляру.
  2. Раскройте Безопасность → Имена входа, в контекстном меню выберите «Создать имя входа».
  3. Выберите «Проверка подлинности SQL Server», задайте имя (например, user1c) и пароль.
  4. Снимите флажок «Пользователь должен сменить пароль при следующем входе».
  5. На странице «Роли сервера» отметьте dbcreator, если базы будет создавать сам сервер 1С.

После создания базы откройте Сопоставление пользователей для этого логина и выдайте в новой базе роль db_owner. С ролями dbcreator и db_owner 1С может создавать базу и менять её структуру при обновлении конфигурации.

Не подключайте 1С под логином sa. Это работает, но пароль sa оказывается в свойствах каждой базы в консоли кластера, и любой администратор 1С получает полный доступ ко всем базам SQL Server.

Что ещё проверить по правам:

  • 🔐 учётная запись службы сервера 1С (USR1CV8 или ваша) имеет право «Вход в качестве службы»;
  • 📁 у неё есть полный доступ к каталогу данных кластера (по умолчанию C:\Program Files\1cv8\srvinfo);
  • 🧾 если используете вход через Windows вместо SQL-логина, логин в SQL Server создаётся именно для учётной записи службы 1С, а не для пользователя, который работает в базе.

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

Базу удобнее создавать в консоли администрирования: там видны все поля сразу.

  1. Откройте «Администрирование серверов 1С Предприятия».
  2. Раскройте Центральные серверы 1С:Предприятия → имя сервера → Кластеры → Локальный кластер → Информационные базы.
  3. В контекстном меню узла «Информационные базы» выберите Создать → Информационная база.
  4. Заполните поля по таблице ниже и нажмите «ОК».
ПолеЧто указать
ИмяИмя базы в кластере, латиницей без пробелов, например buh_ooo
Защищённое соединениеВыключено
Сервер баз данныхИмя сервера SQL; для именованного экземпляра SERVER\SQLEXPRESS
Тип СУБДMSSQLServer
База данныхИмя базы в SQL Server, можно такое же, как в кластере
Пользователь сервера БД / ПарольЛогин user1c и его пароль
Смещение датОставьте предложенное значение и не меняйте его позже
Создать базу данных в случае её отсутствияВключено
Установить блокировку регламентных заданийВключено на время переноса

Флажок «Установить блокировку регламентных заданий» не забудьте снять после проверки базы — иначе не будут работать обмены, загрузка курсов и прочие задания по расписанию.

Если база в SQL Server уже создана вручную, флажок «Создать базу данных …» ставить не нужно — 1С подключится к существующей пустой базе.

Подключение базы у пользователей

В окне запуска 1С нажмите «Добавить» → «Добавление в список существующей информационной базы». На следующем шаге выберите «На сервере 1С:Предприятия» и заполните:

  • Кластер серверов 1С:Предприятия — имя сервера, где работает служба 1С (если порт агента изменён, то SERVER:порт);
  • Имя информационной базы в кластере — то же имя, что в консоли (buh_ooo).

Имя SQL-базы и логин СУБД пользователю знать не нужно, их хранит кластер.

Перенос файловой базы на SQL Server через .dt

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

Шаг 1. Освободите базу. Попросите пользователей выйти. Выгрузке нужен монопольный доступ, при открытых сеансах Конфигуратор её не начнёт.

Шаг 2. Проверьте базу (по желанию, но полезно). В Конфигураторе: Администрирование → Тестирование и исправление. Запустите сначала только проверку логической целостности, без исправления. Ошибки в файловой базе после загрузки в SQL никуда не денутся.

Шаг 3. Выгрузите базу. В Конфигураторе файловой базы: Администрирование → Выгрузить информационную базу. Сохраните файл .dt на локальный диск сервера, а не на сетевую папку — так быстрее.

Шаг 4. Загрузите в новую базу. Откройте Конфигуратор серверной базы, созданной в предыдущем разделе: Администрирование → Загрузить информационную базу, укажите .dt. Перед загрузкой платформа предупредит, что текущие данные будут заменены, — для пустой базы это нормально.

Шаг 5. Проверьте результат. Запустите базу в режиме 1С:Предприятие, откройте пару отчётов за прошлый период и сравните итоги с файловой базой. Хороший ориентир — оборотно-сальдовая ведомость за год: суммы должны совпасть до копейки.

Шаг 6. Уберите старую базу из списка. Файловую базу не удаляйте ещё 2–4 недели, но переименуйте её в списке баз или уберите из него у пользователей, чтобы никто случайно не продолжил работать в старой копии.

💡 Для базы 5–10 ГБ выгрузка и загрузка вместе занимают от 30 минут до пары часов. Планируйте перенос на вечер или выходной.

После загрузки .dt
Выполнено: 0 / 6

Если база очень большая

На базах в десятки гигабайт .dt грузится долго, а при нехватке памяти выгрузка может обрываться. В этом случае помогает пакетная выгрузка и загрузка из командной строки, без открытия Конфигуратора вручную:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /DumpIB "D:\Backup\buh.dt" /Out "D:\Backup\dump.log"

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /S "SERVER\buh_ooo" /N "Администратор" /P "пароль" /RestoreIB "D:\Backup\buh.dt" /Out "D:\Backup\restore.log"

Номер версии в пути замените на свой. Результат и ошибки пишутся в файл из параметра /Out — его стоит прочитать даже при успешном завершении.

Настройка SQL Server под 1С после переноса

База в SQL Server без обслуживания со временем начинает тормозить. Сделайте пять настроек сразу после переноса.

1. Ограничьте память SQL Server. По умолчанию SQL Server забирает почти всю RAM и вытесняет рабочие процессы 1С. В SSMS: свойства сервера → «Память» → «Максимальный объём памяти сервера». На совмещённом сервере с 32 ГБ оставьте SQL примерно 16–20 ГБ.

2. Выставьте MAXDOP = 1. Свойства сервера → «Дополнительно» → «Максимальная степень параллелизма» = 1. Запросы 1С короткие и многочисленные, параллельные планы в них чаще мешают, чем помогают. Это давняя рекомендация для серверов под 1С.

3. Выберите модель восстановления. У новой базы по умолчанию модель «Полная», и журнал транзакций растёт, пока его не бэкапить. Варианты:

МодельКогда подходитЧто нужно делать
Простая (Simple)Достаточно ежедневной полной копииТолько полные бэкапы, журнал не растёт
Полная (Full)Нужно восстановление на момент времениПолные бэкапы + бэкапы журнала каждые 15–60 минут

Для небольшой организации обычно хватает простой модели с ночным полным бэкапом.

4. Настройте план обслуживания. В SSMS через «Управление → Планы обслуживания» соберите задание:

  • 🔄 ежедневно — обновление статистики;
  • 🧹 после обновления статистики — очистка процедурного кэша (DBCC FREEPROCCACHE), чтобы SQL построил планы по свежей статистике;
  • 🧱 раз в неделю — реорганизация или перестроение индексов;
  • 💾 ежедневно — полный бэкап с проверкой.

Ставьте задания на ночь: перестроение индексов нагружает диск и блокирует таблицы.

5. Разнесите файлы. Если дисков несколько, держите файл данных, журнал транзакций и tempdb на разных томах, а лучше на SSD. Для tempdb создайте несколько файлов данных одинакового размера (по числу ядер, но не больше восьми).

Добавьте в исключения антивируса каталоги файлов SQL Server и каталог srvinfo сервера 1С. Проверка этих файлов «на лету» снижает скорость в разы.

💡 Включите в Windows схему электропитания «Высокая производительность». На серверах со схемой «Сбалансированная» процессор сбрасывает частоту, и 1С ощутимо замедляется.

Типовые ошибки подключения 1С к SQL Server

Большинство проблем после смены режима работы — сетевые или с правами. Найдите свой симптом:

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

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

Частые ошибки при смене режима работы

  • ❌ Версия сервера 1С не совпадает с версией клиентов. Даже отличие в последних цифрах сборки блокирует вход. Обновляйте сервер и клиенты одновременно.
  • ❌ Не снята блокировка регламентных заданий. Через неделю выясняется, что курсы валют не загружались, а обмен с сайтом стоит.
  • ❌ Модель восстановления «Полная» без бэкапов журнала. Журнал транзакций разрастается до размера диска, и база встаёт с ошибкой записи.
  • ❌ Пользователи продолжают работать в файловой базе. Через пару дней данные расходятся, и их приходится сводить руками.
  • ❌ SQL Server Express на растущей базе. При достижении 10 ГБ база перестаёт принимать данные. Если файл 1Cv8.1CD уже 6–7 ГБ, сразу берите Standard или рассмотрите PostgreSQL — 1С поддерживает его как СУБД для клиент-серверного режима.

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

Можно ли вернуть базу обратно в файловый режим?
Да. Выгрузите серверную базу в .dt, создайте новую пустую файловую базу и загрузите в неё файл. Данные и пользователи перенесутся так же.
Нужно ли покупать лицензию на MS SQL Server?
Для Express — нет, он бесплатный, но с лимитом 10 ГБ на базу. Standard лицензируется отдельно: по ядрам процессора или по схеме «сервер + клиентские лицензии». Ориентировочная стоимость Standard — сотни тысяч рублей, поэтому многие небольшие компании выбирают PostgreSQL.
Сколько баз можно разместить на одном сервере SQL?
Ограничения со стороны 1С нет. Упирается всё в память и диски: каждая активная база занимает часть буферного кэша SQL Server.
Станет ли 1С работать быстрее после перехода на SQL?
При 1–3 пользователях файловая база бывает даже быстрее. Выигрыш начинается с 5–10 одновременных пользователей и тяжёлых операций: закрытия месяца, расчёта зарплаты, отчётов за год.
Можно ли копировать базу средствами SQL вместо выгрузки .dt?
Да, и для ежедневных копий это правильный путь: бэкап SQL быстрее и не требует выгонять пользователей. Восстановить такую копию можно в новую SQL-базу и зарегистрировать её в кластере как отдельную информационную базу.