Как развернуть 1С:Предприятие в связке с Microsoft SQL Server

· 9 мин

Содержание

Чтобы 1С заработала на MS SQL Server, нужны три вещи: установленный экземпляр SQL Server, SQL-логин с правами на создание баз и запущенный сервер 1С:Предприятие (кластер). Сама база создаётся не в SSMS вручную, а из 1С — при создании информационной базы вы указываете сервер СУБД, и платформа разворачивает структуру сама.

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

Что устанавливаем и в каком порядке

Клиент-серверная 1С — это два отдельных продукта на одной или разных машинах:

  • 🗄️ Microsoft SQL Server — хранит данные. Подойдёт Standard или Enterprise; бесплатная Express годится только для тестов из-за лимита 10 ГБ на базу и 1 ГБ ОЗУ на экземпляр.
  • ⚙️ Сервер 1С:Предприятие (кластер) — исполняет бизнес-логику, обращается к SQL за данными.

Порядок установки:

  1. Поставьте SQL Server. При установке выберите смешанный режим аутентификации (SQL Server and Windows Authentication) — он нужен, чтобы создать отдельный SQL-логин для 1С.
  2. Установите SQL Server Management Studio (SSMS) — отдельным дистрибутивом, в составе SQL Server его давно нет.
  3. Поставьте сервер 1С:Предприятие той же разрядности и не ниже той версии платформы, что у клиентов. Компонент «Сервер 1С:Предприятия» в мастере установки отмечается галочкой; при установке как службы задайте учётную запись, от которой она работает.

SQL Server и сервер 1С можно держать на одной машине — так меньше сетевых задержек. Но тогда жёстко ограничьте память SQL Server (см. раздел про оптимизацию), иначе СУБД заберёт всю ОЗУ и кластеру 1С ничего не останется.

После установки проверьте, что служба SQL Server (MSSQLSERVER) и служба Агент сервера 1С:Предприятия запущены — в оснастке services.msc.

Создаём SQL-логин и выдаём права

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

Через SSMS:

  1. Подключитесь к экземпляру, раскройте Security → Logins.
  2. Правой кнопкой — New Login.
  3. Выберите SQL Server authentication, задайте имя (например, usr1cv8) и пароль.
  4. Снимите галку Enforce password policy, если политика домена заставляет менять пароль — служебный логин не должен внезапно «протухать».

Теперь права. Если базу будет создавать сама платформа 1С (обычный сценарий), логину нужны две серверные роли:

Серверная рольЗачем нужна
dbcreatorсоздавать и удалять базы данных
processadminуправлять процессами (1С завершает «зависшие» соединения)

Назначаются на вкладке Server Roles в свойствах логина. Роль sysadmin выдавать не нужно — это избыточно и небезопасно.

Если база уже создана вручную, логину достаточно роли db_owner на этой конкретной базе (вкладка User Mapping).

Пароль SQL-логина вы введёте в настройках информационной базы 1С. Он хранится на стороне кластера. Смените стандартные и пустые пароли до ввода базы в эксплуатацию — пустой пароль у sa до сих пор встречается на забытых тестовых серверах.

Настраиваем кластер серверов 1С

Кластер 1С управляется через оснастку Администрирование серверов 1С:Предприятия (ярлык появляется после установки сервера). Если оснастка не подключается к центральному серверу, зарегистрируйте её COM-компоненту: от администратора выполните regsvr32 radmin.dll из каталога bin установленной платформы — без этого консоль не видит кластер.

Что проверить и задать в кластере:

  • Центральный сервер — машина, где работает агент. По умолчанию он слушает порт 1540.
  • Менеджер кластера — порт 1541.
  • Диапазон портов рабочих процессов — по умолчанию 1560:1591. Задаётся в свойствах рабочего сервера, не кластера.

Как именно соединяется клиент: сначала к агенту (порт 1540), тот перенаправляет к менеджеру кластера (1541), а он — к конкретному рабочему процессу из диапазона портов. Консоль администрирования тоже идёт через агент. Поэтому в брандмауэре открывают порты 1540, 1541 и весь рабочий диапазон.

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

Для скриптового управления кластером есть утилита rac (работает через сервис администрирования RAS). Полезные команды: rac cluster list — список кластеров, rac infobase summary list --cluster=<id> — список баз. Полный синтаксис смотрите в rac help — параметры лучше свериться, чем вспоминать по памяти.

Создаём информационную базу

Самый частый способ — из окна запуска 1С:Предприятия.

  1. В стартовом окне нажмите Добавить.
  2. Выберите Создание новой информационной базы → нужный вариант (из шаблона конфигурации или пустую).
  3. Укажите тип расположения: На сервере 1С:Предприятия.
  4. Заполните параметры подключения:
ПолеЧто вписать
Кластер серверов 1С:Предприятияимя или IP машины с кластером
Имя информационной базылатиницей, без пробелов, например accounting
Тип СУБДMS SQL Server
Сервер базы данныхимя SQL-сервера (SERVER\INSTANCE для именованного экземпляра)
Имя базы данныхкак база будет названа в SQL (обычно совпадает с именем ИБ)
Пользователь базы данныхваш SQL-логин, например usr1cv8
Парольпароль этого логина
  1. Отметьте галочку Создать базу данных в случае её отсутствия — платформа сама развернёт базу на SQL Server и настроит нужную кодировку. Самостоятельно создавать базу в SSMS не надо.

После этого платформа создаёт пустую базу (или загружает шаблон), и ИБ появляется в списке. Если вы добавляли типовую конфигурацию из поставки, первый запуск в Конфигураторе выполнит начальное заполнение.

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

Оптимизация производительности SQL Server под 1С

Настройки «из коробки» у SQL Server рассчитаны на универсальную нагрузку. Для 1С несколько параметров меняют заметно.

Ограничьте память SQL Server. По умолчанию СУБД забирает почти всю ОЗУ. В свойствах экземпляра (Properties → Memory) задайте Maximum server memory так, чтобы оставить ОС и, если кластер 1С на той же машине, серверу 1С по несколько гигабайт. Ориентир для выделенного SQL-сервера — оставить ОС около 10–15% памяти.

MAXDOP = 1. Параллелизм запросов (Max Degree of Parallelism) 1С рекомендует отключать — ставить значение 1. Запросы 1С короткие и многочисленные, параллельные планы чаще вредят, чем помогают. Параметр в Properties → Advanced.

Модель восстановления базы. Для базы 1С по умолчанию подойдёт:

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

Выбирайте Full только если готовы настроить бэкап журнала (раз в 15–60 минут). Для многих рабочих баз Simple + ежедневный полный бэкап достаточно.

tempdb. На нагруженных базах разнесите файлы tempdb — несколько файлов данных одинакового размера (ориентир — по числу ядер, но не больше 8) снижают конкуренцию за служебные страницы.

Отдельные файлы базы (.mdf) и журнала (.ldf) выносите на разные физические диски, а лучше — на SSD/NVMe. Дисковая подсистема для 1С критичнее частоты процессора.

Параметры запуска и режимы работы

Рабочие процессы кластера запускаются автоматически, но несколько моментов стоит знать.

Монопольный доступ. Он нужен не для повседневной работы, а только для отдельных операций: обновления структуры конфигурации (реструктуризация), загрузки .dt, тестирования и исправления базы. В эти моменты пользователи должны выйти. Для планового обслуживания в консоли кластера можно задать блокировку начала сеансов с сообщением и временным окном.

Публикация для тонкого клиента и веб. Если нужен доступ через браузер или тонкий клиент по HTTP, базу публикуют на веб-сервере (IIS или Apache) утилитой публикации. Это отдельная настройка поверх клиент-серверной базы, не обязательная для обычного доступа через толстый/тонкий клиент по протоколу 1С.

Лицензирование. Без действующей лицензии платформа не запустит базу (исключение — учебная версия с ограничениями). Клиентские лицензии выдаёт либо сервер лицензирования, либо локальный ключ; серверная лицензия нужна самому кластеру. Если при входе пользователи упираются в «не найдена лицензия», проверяйте сервер лицензирования, а не настройки SQL.

Диагностика подключения и частые ошибки

Если база не создаётся или клиент не входит, ошибка почти всегда на одном из трёх стыков: клиент→кластер, кластер→SQL, права SQL-логина.

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

Полезные источники диагностики:

  • Технологический журнал платформы (настраивается файлом logcfg.xml в каталоге conf) — показывает, что именно отвечает SQL.
  • SQL Server Error Log и SQL Server Configuration Manager — состояние служб и сетевых протоколов.
  • Команда rac session list --licenses — какие сеансы активны и какие лицензии заняты.

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

Резервное копирование и регламентные работы

Выгрузка в .dt из Конфигуратора — это не инструмент регулярного бэкапа рабочей базы: она требует монопольного доступа и на больших базах идёт долго. Для клиент-серверной 1С бэкап делают средствами SQL Server.

Базовый регламент:

  1. Полный бэкап базы (BACKUP DATABASE) — ежедневно, обычно ночью. Настраивается планом обслуживания (Maintenance Plans) или заданием SQL Server Agent.
  2. Бэкап журнала транзакций — только если модель восстановления Full; раз в 15–60 минут.
  3. Проверка целостности (DBCC CHECKDB) — еженедельно, покажет повреждения страниц до того, как они станут потерей данных.
  4. Обновление статистики и реиндексация — регламентное задание раз в неделю; на больших базах фрагментация индексов замедляет запросы 1С.

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

Храните бэкапы не только на том же сервере. Копия на другой диск или в другое помещение спасает, когда выходит из строя весь сервер, а не одна база.

Проверяйте восстановление: бэкап, который ни разу не разворачивали на тестовом сервере, — это предположение, а не резервная копия.

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

Какую редакцию SQL Server выбрать для 1С?
Для рабочей базы — Standard; Enterprise нужен при очень больших объёмах и специфических возможностях. Express бесплатна, но ограничена 10 ГБ на базу и 1 ГБ памяти — только для тестов и крошечных баз.
Можно ли держать SQL Server и сервер 1С на одной машине?
Да, и это снижает сетевые задержки. Обязательно ограничьте максимальную память SQL Server, иначе СУБД заберёт всю ОЗУ и кластеру 1С не хватит ресурсов.
Нужно ли создавать базу в SSMS перед добавлением в 1С?
Нет. Отметьте «Создать базу данных в случае её отсутствия» при создании ИБ — платформа развернёт базу сама с нужной кодировкой. Ручное создание — запасной вариант, тогда логину нужна роль db_owner на этой базе.
Какую модель восстановления ставить?
Simple — проще, лог усекается сам, но восстановление только на момент полного бэкапа. Full — восстановление на любой момент, но требует регулярного бэкапа журнала транзакций, иначе лог переполнит диск.
Почему 1С рекомендует MAXDOP = 1?
Запросы 1С короткие и массовые, параллельные планы выполнения для них чаще создают накладные расходы, чем ускоряют. Отключение параллелизма делает отклик стабильнее.