Рассмотрим ситуацию, которая часто встречается при развертывании инфраструктуры для 1С:Предприятие: в наличии имеется официально приобретенная коробочная версия MS SQL Server 2019 Standard с ограниченным количеством клиентских лицензий (например, 10 CAL), но реальное число пользователей, работающих в базах 1С, значительно выше (50 и более человек). В рамках данной статьи мы подробно разберем, как ведет себя система с технической точки зрения, какие ограничения существуют в версии Standard и как правильно трактовать правила лицензирования Microsoft в контексте работы с сервером приложений 1С.
Проанализируем главный технический вопрос: существует ли в современных версиях SQL Server встроенный «счетчик», который блокирует 11-го пользователя при наличии всего 10 лицензий? Выясним исторический контекст: в очень старых версиях (например, SQL Server 6.5 или 7.0) действительно существовали механизмы ручного ввода количества лицензий в настройках сервера, и система могла ограничивать количество одновременных соединений.
Однако в MS SQL Server 2019 (как и во всех версиях, начиная с 2005-2008) технический программный контроль количества CAL-лицензий отсутствует. Это означает, что при установке «коробочной» версии или версии, активированной ключом, сервер не будет прерывать сессии пользователей, если их станет больше, чем указано в лицензионном соглашении. Система работает по принципу Self-compliance (самостоятельный контроль соответствия). Если вы установите сервер и начнете работу, он технически «пустит» и 50, и 100 человек, если позволят аппаратные ресурсы.
Разберем, как именно 1С:Предприятие взаимодействует с базой данных. В сообщениях форума часто встречается утверждение: «Технически сервер 1С работает со скулем под одним единственным пользователем». Это утверждение верно лишь отчасти и требует пояснения.
Когда пользователи подключаются к базе 1С, они взаимодействуют с сервером приложений 1С (rphost). Именно сервер приложений устанавливает физические соединения с SQL Server. Для этого используется одна или несколько учетных записей (обычно это доменная учетная запись службы или SQL-пользователь sa). С точки зрения SQL Server, он видит ограниченное количество активных сессий, инициированных процессом сервера 1С, а не 50 разных Windows-пользователей.
Чтобы убедиться в этом, проанализируем ситуацию с помощью простого запроса в SQL Server Management Studio (SSMS), который показывает текущие соединения:
SELECT
login_name,
host_name,
program_name,
COUNT(session_id) AS [ConnectionsCount]
FROM sys.dm_exec_sessions
WHERE is_user_process = 1
GROUP BY login_name, host_name, program_name;
Выполнив этот запрос, мы увидим, что большинство соединений приходят от одного host_name (сервер 1С) под одним login_name. Однако это техническое удобство не означает, что вам не нужны лицензии.
Рассмотрим важнейший юридический аспект, который Microsoft называет мультиплексированием. Мультиплексирование — это использование аппаратного или программного обеспечения (в нашем случае — сервера 1С), которое объединяет подключения, перенаправляет информацию или уменьшает количество устройств или пользователей, напрямую обращающихся к SQL Server.
Согласно официальному руководству по лицензированию Microsoft, использование мультиплексирования не уменьшает количество необходимых клиентских лицензий. Это означает:
Посмотрим на ситуацию со стороны производительности. Автор темы использует «коробочную» версию, что соответствует редакции Standard. Даже если SQL Server позволит подключиться 50 пользователям, вы можете столкнуться с аппаратными лимитами, жестко зашитыми в код программы:
Проанализируем, когда стоит задуматься о смене модели лицензирования. Существует две основные схемы:
Для 50 пользователей 1С экономически часто выгоднее купить лицензию Per Core, так как стоимость 50 отдельных CAL может превысить стоимость лицензирования 8-12 ядер сервера. В модели «на ядро» вам больше никогда не придется считать пользователей, сколько бы их ни добавилось в базу.
Разберем нюанс работы SQL Server на виртуальных машинах (VM). Если вы используете модель Server + CAL, вам достаточно назначить лицензию самой виртуальной машине и обеспечить наличие CAL для всех пользователей. Если же вы решите перейти на модель Per Core в облаке или на собственном гипервизоре, помните:
Нужно лицензировать все виртуальные ядра (vCPU), выделенные виртуальной машине, но не менее 4 лицензий на ядра для каждого экземпляра. Рассмотрим пример: если вы выделили под SQL Server всего 2 виртуальных ядра, вам все равно придется оплатить 4.
Подведем итог нашему исследованию:
Таким образом, мы выяснили, что отсутствие технического запрета не означает легальность использования. Для стабильной и законной работы системы 1С:Предприятие необходимо либо докупить недостающие CAL, либо сменить модель лицензирования на процессорную.