Как перевести базу 1С на MS SQL Server: настройка с нуля

· 10 мин

Содержание

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

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

Статья про платформу 8.3 (интерфейс «Такси»), MS SQL Server и Windows Server 2016 и новее. Пути в разных конфигурациях 1С здесь не расходятся: перевод на SQL — задача платформы, а не прикладного решения.

Что должно стоять до настройки

Подключение к SQL — это связка из трёх ролей. Их можно развести по разным машинам или собрать на одном сервере:

  • 🖥️ Сервер 1С:Предприятия — служба ragent, которая держит кластер и рабочие процессы.
  • 🗄️ Сервер СУБД — экземпляр MS SQL Server, где физически хранятся таблицы базы.
  • 🔑 Сервер лицензий — служба, раздающая программные лицензии или ключи HASP. Чаще всего это тот же сервер 1С.

Поддерживаются MS SQL Server, PostgreSQL, Oracle и IBM DB2. Эта статья — про MS SQL.

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

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

Смешанный режим аутентификации включается в свойствах экземпляра SQL Server на вкладке Security → SQL Server and Windows Authentication mode. После смены режима службу SQL нужно перезапустить — предупредите пользователей, их сеансы к этому экземпляру прервутся.

Настройка MS SQL Server под 1С

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

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

Права логину дайте по минимуму, которого хватает для создания базы:

Серверная рольЗачем нужна
dbcreatorсоздать новую базу из окна запуска 1С
processadminуправлять сеансами СУБД при работе кластера
publicбазовый доступ, назначается автоматически

Роль sysadmin упрощает первую настройку, но для рабочего сервера её лучше не оставлять. Логин с правами sysadmin — это полный контроль над всем экземпляром SQL, а не только над базой 1С. После того как база создана, 1С сам становится её владельцем (db_owner), и роль dbcreator можно снять, если новых баз на этом логине вы больше не заводите.

Запишите имя экземпляра SQL ровно так, как его видит сеть. Для именованного экземпляра это ИМЯ_СЕРВЕРА\ИМЯ_ЭКЗЕМПЛЯРА (например, SRV-DB\SQLEXPRESS), для экземпляра по умолчанию — просто имя сервера. Это значение вы будете вводить в 1С буква в букву.

Проверьте, что служба SQL Server Browser запущена, если используете именованный экземпляр, — без неё клиент не найдёт экземпляр по имени.

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

Кластер — это логическая обёртка над службой сервера 1С. По умолчанию при установке создаётся кластер на порту 1541, агент слушает порт 1540, рабочие процессы — диапазон 1560–1591.

Для работы в окне запуска кластер отдельно регистрировать не нужно: достаточно указать имя сервера 1С и его порт. Но если вы хотите видеть базы, сеансы и настройки, поставьте консоль администрирования серверов (оснастку MMC) или пользуйтесь утилитой rac.

В консоли администрирования кластер подключается по имени агента сервера. Если оснастка не открывается с ошибкой о библиотеке, перерегистрируйте её компоненту из каталога bin платформы командой regsvr32 radmin.dll — это частый шаг после переустановки или обновления платформы.

Через rac состав кластера смотрят так:

rac cluster list
rac infobase summary list --cluster=<идентификатор кластера>

Идентификаторы rac выдаёт в выводе предыдущей команды. Если не уверены в параметрах — вызовите rac help, подкоманды там описаны точно.

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

Создание информационной базы на сервере

Самый простой путь — через окно запуска 1С, то самое, где выбирают базу при старте.

  1. Нажмите Добавить → выберите Создание новой информационной базы.
  2. Укажите Создание информационной базы без конфигурации (для пустой) или выбор шаблона, если ставите типовую.
  3. Тип размещения — На сервере 1С:Предприятия.
  4. Заполните поля подключения.

Поля на шаге подключения к серверу:

  • Кластер серверов 1С:Предприятия — имя или IP сервера 1С. Если кластер не на стандартном порту, добавьте его через двоеточие.
  • Имя информационной базы в кластере — техническое имя, под которым база будет видна в кластере. Латиницей, без пробелов (например, buh_main).
  • Защищённое соединение — обычно Отключено для локальной сети.
  • Тип СУБД — MS SQL Server.
  • Сервер баз данных — имя экземпляра SQL (то самое SRV-DB\SQLEXPRESS).
  • Имя базы данных — как база будет называться в самом SQL. Если её ещё нет, 1С создаст.
  • Пользователь базы данных и Пароль — тот самый SQL-логин.
  • ✅ Создать базу данных в случае её отсутствия — поставьте галку, иначе 1С будет искать уже существующую базу и выдаст ошибку.
  • Смещение дат — оставьте 0, менять без причины не нужно.

После Готово платформа создаёт базу в SQL, разворачивает в ней служебные таблицы и добавляет базу в список запуска. Если ставили из шаблона типовой конфигурации, дальше пойдёт первоначальное наполнение.

Тот же результат даёт консоль администрирования: правый клик по кластеру → создать информационную базу, поля там те же самые.

Перенос данных из файловой базы

Чаще всего SQL-базу создают не пустой, а переносят в неё действующую файловую базу . Механизм — выгрузка в файл .dt и загрузка в новую серверную базу .

Порядок такой:

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

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

Загрузка .dt полностью затирает содержимое целевой базы. Грузите только в заведомо пустую или не нужную вам базу.

Файл .dt — это не резервная копия в терминах SQL. Для штатного бэкапа серверной базы используйте средства самого SQL Server (BACKUP DATABASE) или план обслуживания. Выгрузка .dt годится для переноса и разовой архивной копии, но на большой базе она долгая и грузит сервер.

Альтернатива .dt — восстановить файловую базу через механизм обновления/сравнения конфигураций или перенести только данные обработкой выгрузки-загрузки. Но для смены файлового варианта на SQL связка «выгрузка .dt → загрузка .dt» — самый надёжный путь.

Разбор ошибок подключения

Ошибки при подключении почти всегда сводятся к четырём причинам: не тот адрес сервера, не хватает прав у SQL-логина, не запущена служба, закрыт порт на межсетевом экране. Текст ошибки подскажет, какая именно.

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

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

Отдельно про сеть: telnet <сервер SQL> 1433 с машины сервера 1С должен подключаться. Если нет — дело в межсетевом экране или в том, что SQL не слушает TCP/IP (включается в SQL Server Configuration Manager, протокол TCP/IP для экземпляра, после чего службу SQL перезапустить в технологическое окно).

Настройка производительности MS SQL для 1С

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

  • Max degree of parallelism (MAXDOP) = 1. 1С выполняет много коротких запросов, параллелизм на них чаще мешает, чем помогает. Классическая рекомендация для баз 1С — отключить параллелизм на уровне экземпляра.
  • Автоувеличение файлов — фиксированными мегабайтами, не процентами. Прирост в процентах на большой базе даёт резкие паузы. Поставьте, например, 256–512 МБ для файла данных.
  • Модель восстановления. Full, если делаете регулярные бэкапы журнала транзакций и нужна точка восстановления на момент сбоя. Simple, если журнал не бэкапите, — иначе он разрастётся. Для рабочей базы обычно Full плюс план обслуживания.
  • Max server memory. Ограничьте память SQL, не отдавайте все 100%: операционной системе и службе 1С тоже нужна память.
  • Файлы данных и журнала — на разных физических дисках. Журнал транзакций пишется последовательно, данные читаются вперемешку; разнесение дисков снимает конкуренцию.
  • tempdb. На современных версиях SQL несколько файлов tempdb создаются автоматически; проверьте, что их число соответствует числу ядер (до 8).

Регламентное обслуживание индексов и статистики для базы 1С обязательно: при активной работе фрагментация растёт быстро. Настройте план обслуживания с перестроением/реорганизацией индексов и обновлением статистики в ночное окно. Перестроение индексов берёт блокировки, поэтому ставьте его в технологическое окно, а не на рабочий день.

Отдельно стоит проверить уровень совместимости базы (Compatibility level) после переноса: при создании через 1С он выставляется по текущему экземпляру SQL, но после миграции базы между серверами разных версий иногда остаётся старым и тормозит планировщик запросов. Приведите его к версии своего экземпляра SQL, если расхождение есть.

Не меняйте настройки SQL пачкой «на всякий случай». Снимите замеры до и после каждого изменения — иначе непонятно, что именно помогло, а что ухудшило.

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

Обязательно ли ставить SQL Server отдельно от сервера 1С?
Нет. Для небольших внедрений сервер 1С и SQL часто живут на одной машине — так меньше сетевых задержек. На нагруженных базах их разводят, чтобы память и диск не делились между двумя тяжёлыми службами.
Подойдёт ли бесплатная редакция SQL Server Express?
Для малых баз да, но у Express есть ограничения: предел размера одной базы (несколько десятков ГБ), объём используемой памяти и числа ядер. Когда база упирается в лимит, переходят на старшую редакцию.
Можно ли подключить к SQL уже существующую базу, созданную в 1С раньше?
Да. Создайте базу в SQL или возьмите существующую, в окне подключения снимите галку «создать при отсутствии» и укажите её имя. Главное, чтобы структура базы соответствовала конфигурации, которую вы разворачиваете.
Чем SQL-бэкап лучше выгрузки в .dt?
Бэкап средствами SQL делается быстро, без монопольного доступа и без остановки работы пользователей, а восстановление идёт на уровне СУБД. Выгрузка .dt требует монопольного режима и на большой базе длится часами.
Нужен ли отдельный сервер лицензий?
Нет, отдельная машина не обязательна. Служба лицензирования обычно работает на том же сервере, где стоит 1С. Важно лишь, чтобы клиенты и сервер могли до неё достучаться по сети.