В этой статье мы познакомимся c существующими схемами лицензирования Microsoft SQL Server, а также рассмотрим особенности лицензирования SQL Server в среде виртуализации и контейнерах (статья актуальна для последних версий SQL Server 2016/2017/2019).
Редакции MS SQL Server и модели лицензирования
Microsoft SQL Server доступна в пяти редакциях.
- Express Edition – бесплатная редакция для небольших инсталляций, максимальный размер БД на диске – 10 Гб, использование RAM до 1 Гб, 1 физический сокет или 4 ядра;
- Developer Edition – бесплатная редакция для разработчиков. Включает в себя весь стек технологий SQL Server. Можно установить и использовать только для разработки, тестов и демонстрации на непродуктивных системах;
- Web Edition – специальная редакция для веб-хостингов (провайдеров), распространяется только в рамках Microsoft Services Provider License Agreement (SPLA);
- Standard Edition – в этой редакции доступен базовый функционал СУБД, отчеты, аналитика. Максимальное использование RAM– до 128 Гб, 4 сокета или 24 ядра (возможна настройка репликации между несколькими экземплярами SQL Server);
- Enterprise Edition – самая полная редакция СУБД, включает функционал редакции Standard, а также дополнительные возможности по анализу, отказоустойчивости (в том числе Always On) и обработки данных (весь функционал доступен в ознакомительной версии SQL Server).
Редакции Developer и Express распространяются бесплатно. Редакции Standard и Enterprise требуют лицензирования.
Для SQL Server существуют две модели лицензирования:
- Модель «Сервер + Клиенты» (Server+CAL)
- Модель «По количеству ядер» (Per Core)
SQL Server Standard может быть лицензирована по любой из двух моделей (Server+CAL или Per Core).
Редакция SQL Server Enterprise лицензируется только по модели: «По количеству ядер».
Лицензирование SQL Server по ядрам
Данная модель используется для серверов с большим или неизвестным количеством клиентов. Эта модель лицензирования предоставляет доступ неограниченному числу пользователей или устройств для подключения изнутри или снаружи организации.
Клиентские лицензии приобретать не требуется.
В модели лицензирования по ядрам, вам нужно “закрыть” лицензиями все процессорные ядра сервера, на котором запущен SQL Server. Основные требования и ограничения:
- Одна лицензия выпускается на два ядра (2Lic Core);
- Для лицензирования сервера вам нужно приобрести минимум 2 двух-ядерных лицензии на каждый физический процессор сервера;
- При запуске на физическом сервере (physical operating system environment — POSE), все ядра сервера нужно лицензировать.
Лицензирование SQL Server по модели «Сервер + Клиенты»
Согласно это модели лицензирования, на каждый экземпляр SQL Server приобретается одна серверная лицензия, которая привязывается к физическому (виртуальному) серверу (не зависит от количества ядер сервера). Затем вам нужно приобрести отдельные клиентские лицензии (CAL) на каждое устройство или пользователя, которые подключаются к SQL Server.
Клиентские лицензии SQL Server CAL (как и RDS CAL) бывают двух видов:
- User CAL – “на пользователя”. Приобретается для учетных записей пользователей, которые подключаются к SQL Server с серверной лицензией.
- Device CAL – “на устройство“. Приобретается для всех устройств, с которых выполняется подключение к SQL Server с серверной лицензией.
Каждая лицензия SQL Server CAL позволяет подключаться к неограниченному количеству баз SQL Servers.
Т.к. лицензии User CAL и Device CAL стоят одинаково, необходимо заранее рассчитать экономическую целесообразность покупки клиентских лицензий “на пользователя” или “на устройство”.
Примеры.
- SQL Server используют 20 человек с 20 известных устройств. Здесь нет разницы какие CAL лицензии покупать.
- SQL Server используют 20 человек с 50 устройств. В данном случае выгоднее купить лицензии “на пользователя”.
- SQL Server используют 50 человек с 20 устройств. Здесь экономически целесообразно купить лицензии “на устройство”.
Для расчета клиентских лицензий SQL Server CAL не имеют значения:
- количество серверов SQL Server в вашей организации;
- количество учетных записей на серверах;
- количество одновременных подключений к серверам;
- наличие всего одного коннекта к серверу на всех пользователей;
- количество бизнес-приложений между SQL Server и клиентами;
- количество терминальных серверов между SQL Server и клиентами;
- нахождение пользователей в штате каких-либо организаций;
- принадлежность устройств каким-либо людям или организациям.
Обратите внимание, что лицензии CAL можно переназначать другому пользователю или другому устройству не чаще, чем 1 раз в 90 дней. Лицензии CAL позволяют использовать SQL Server предыдущих версий.
Для корректного лицензирования вы должны использовать SQL Server CAL той же или более новой версии. Например, чтобы получить доступ к SQL Server 2017 Standard Edition, вам нужен SQL CAL 2019 или SQL CAL 2017.
Стоимость лицензий для SQL Server 2019
- SQL Server Enterprise Edition за 2 ядра — 7128 $
- SQL Server Standard Edition за 2 ядра — 1859 $
- SQL Server Standard Edition — 931 $ + нужно число CAL
- SQL Server Device/User CAL — 209 $
Например, для лицензирования 8-ядерного сервера SQL Standard с 50 пользователями можно:
- Купить лицензии по ядрам (SQLSvrStdCore 2019 SNGL OLV 2Lic NL Each AP CoreLic — 7NQ-01562):
1859*4= 7436$
- Купить серверную лицензию (SQLSvrStd 2019 SNGL OLV NL Each AP — 228-11476) и необходимое количество CAL (SQLCAL 2019 SNGL OLV NL Each AP UsrCAL — 359-06864):
931 + 50*209 = 11381$
Как вы видите, при большом количестве пользователей выгодно лицензировать SQL Server по ядрам. Однако, если у вас большое количество экземпляров SQL Server в производственной среде при неизменном количестве пользователей, выгоднее использовать Server + CAL лицензии.
Лицензирование компонентов SQL Server
SQL Server включает в себя ряд лицензионных серверных компонентов:
- SQL Server Database Engine (DB)
- SQL Server Machine Learning Services
- Machine Learning Server Standalone,
- Master Data Services (MDS)
- Analysis Services (AS)
- Integration Services (IS)
- Reporting Services (RS)
- Data Quality Services (DQS).
Программные компоненты одной лицензии SQL Server не могут быть разделены. Любой операционной среде, в которой работают лицензионные компоненты SQL Server, требуется лицензия. Например, если база данных SQL Server развернута в одной операционной среде, а SQL Server RS развернута в другой, то обе операционные среды должны быть полностью лицензированы.
Если вы используете SQL сервер в режиме High Availability, вам не нужно отдельно лицензировать пассивную копию SQL Server на другом хосте (если она используется только для failover, а не любых других нужд).
Лицензирование SQL Server в виртуальных машинах и контейнерах
Как и лицензирование Windows Server, лицензирование SQL Server в среде виртуализации имеет ряд особенностей.
Модель лицензирования по ядрам
Как и в модели лицензирования “на ядро” в физическом сервере, вы должны лицензировать все виртуальные ядра (vCPU) виртуальной машины, на которой запущен экземпляр SQL Server. Вы можете лицензировать только виртуальные ядра ВМ, либо все физические ядра физического хоста (имеет смылс, если вы запускаете на хосте только ВМ с SQL Server).
На одну ВМ нужно приобрести не менее 2 лицензий (каждая на 2 ядра). В примере ниже лицензии считаются на каждое ядро, затем это количество делится на 2 (14 лицензируемых ядер делим на 2 — нуобходимо приобрести 7 лицензий SQL Server).
Обратите внимание. В первой виртуальной машине всего 2 ядра, но лицензии приобретаются на необходимый минимум – 4.
При использовании SQL Server Enterprise Edition вы можете лицензировать все физические ядра сервера и запускать неограниченное количество экземпляров SQL в количестве операционных сред (физических и/или виртуальных), равном количеству лицензий на одно ядро.
Например, двухпроцессорный сервер с четырьмя ядрами на каждом процессоре, полностью лицензированный восемью лицензиями SQL (4 лицензии на каждые 2 ядра), может запускать SQL Server на восьми виртуальных машинах, независимо от количества виртуальных ядер, выделенных для каждой виртуальной машины.
Клиенты, которые лицензировали все физические ядра на сервере и хотят запустить SQL Server в большем количестве виртуальных машин, чем разрешено, могут назначить дополнительные лицензии на ядро лицензированному серверу.
Каждая дополнительная лицензия на ядро позволяет развертывать SQL Server на дополнительной виртуальной машине, поэтому в предыдущем примере клиент, который хочет запустить SQL Server Enterprise Edition на двенадцати виртуальных машинах, может приобрести и назначить двенадцать лицензий этому серверу (6 на каждые 2 ядра).
При использовании Software Assurance (SA) с лицензиями Enterprise Edition, вы можете развернуть неограниченное количество виртуальных машин для обработки динамических рабочих нагрузок и полного использования аппаратных вычислительных мощностей.
Модель лицензирования “Сервер + клиенты”
Данная модель лицензирования для виртуальных не отличается от схемы лицензирования физического сервера. Для каждой виртуальной машины с SQL Server, приобретается серверная лицензия. Для каждого пользователя или устройства приобретается клиентская лицензия SQL CAL.
Лицензирование контейнеров ничем не отличается от лицензирования виртуальных машин – вам нужно лицензировать все ядра, которые используются в контейнере SQL Server. Либо использовать модель лицензирования с CAL.
Поясните про CAL пожалуйста. Имеются в виду пользователи, которые будут работать напрямик с базой или в принципе пользователи? Ну то есть, например, есть программа. В программе работает 100 человек. Программа подключена к БД и взаимодействует с БД посредством двух учёток. Плюс есть главная административная учётка sql-root, например. Итого три учётные записи, работающие напрямик в БД.
Сколько CAL лицензий необходимо? Сотня или три штуки?
Вам нужно 100 SQL CAL.
Вы должны приобрести и назначить лицензию CAL каждому устройству или пользователю, которые прямо или косвенно обращаются к экземплярам серверного программного обеспечения. Каждый аппаратный раздел или стоечный модуль считается отдельным устройством. Лицензии CAL для каждого продукта указаны в таблице ниже.
• Лицензия CAL не требуется:
(1) на пользователя или устройство, которые получают доступ к экземплярам серверного программного обеспечения только через Интернет без проверки подлинности или другой индивидуальной идентификации, осуществляемой серверным программным обеспечением, или другими способами;
(2) на любые серверы, у которых есть лицензии на запуск экземпляров серверного программного обеспечения;
(3) на устройства или пользователей (не более двух), которые обращаются к экземплярам серверного программного обеспечения только для их администрирования; или
(4) на пользователя или устройство, которые обращаются к экземпляру программного обеспечения, запускаемому в физической операционной среде и использующемуся исключительно для:
(i) запуска программного обеспечения виртуализации устройств;
(ii) обеспечения служб виртуализации устройств;
(iii) запуска программного обеспечения для управления операционными средами и их обслуживания на лицензированном сервере.
Все равно не понятно.
Если у меня 1 терминальный сервер, на него подключаются пользователи по RDP и работают с БД.
В таком случае мне нужен 1 Device CAL на сам сервер или на каждый комп который подключается по RDP?
Нужна лицензия на каждого пользователя или устройство. Не имеет значение, что фактически они подключаются с одного RDS сервера.
А если у нас 4 пользователя и 4 User CAL, но вот тут вышел 5 пользователь и захотел подключиться к серверу. Понятно что это нарушение соглашения, но что произойдет фактически? Его сервер «не пустит»?
CAL лицензии в SQL нигде не указываются и фактически не привязываются (не активируются). Вы активируете купленным ключом ваш SQL Server, но по факту количество пользовательских подключений не ограничено. Т.е. SQL CAL это больше юридическое понятие.
Спасибо за статью, доступно и хорошо расписано. Только цены на 2-х ядерные лицензии указаны некорректно, занижены раза в два. https://www.microsoft.com/ru-ru/sql-server/sql-server-2019-pricing
Это противоречит официальной документации, где сказано не про сервер, а про каждый физический процессор сервера.
SQL Server 2019 Licensing guide, страница 12
Вы правы, спасибо за уточнение! Поправил статью.
Для ОС, непосредственно установленной на сервер (POSE), при лицензировании нужны закрыть минимум 4 ядра каждого физического процессора (2 лицензии на 2 ядра)
Для ВМ лицензируются выделенные ядра (HyperThread не учитывается), минимум 4 лицензии на ВМ ( a minimum of four core licenses required for each virtual machine)
Подскажите, сколько лицензий «SQL Server Standard Edition за 2 ядра» Необходимо купить для виртуальной машины, которая развернута на однопроцессорном сервере имеющим 8 ядер и 16 потоков (включен Hyper-threading). Виртуальная машина при этом использует половину ресурсов процессора, то есть 4 ядра или 8 потоков. В виртуальной машине при такой настройке отображается 8 ядер (потоков).
Нужны две двух-ядерные лицензии.
Спасибо. Ждал вашего ответа.
Если виртуальной машине назначено 8 виртуальных процессоров (vCPU=8), то нужно покупать лицензии на 8 ядер, т.е. 4 Х 2Lic Core . По крайней мере в статье так написано : «вы должны лицензировать ВСЕ виртуальные ядра (vCPU) виртуальной машины».
Добрый день, вопрос по зеркалирующему серверу. К нему будет подключается только 1 устройство основной SQL сервер, его лицензировать нужно как основной сервер или достаточно 1 Device CAL?
В статье написано : «Если вы используете SQL сервер в режиме High Availability, вам не нужно отдельно лицензировать пассивную копию SQL Server на другом хосте (если она используется только для failover, а не любых других нужд).»
Такой вопрос.
Есть сервер со скулём, есть программа которая цепляется к базе под пользователем SA, а уже внутри базы свои пользователи около 10.
Как в таком случае считать количество лицензий, достаточно 1 CAL на пользователя или всё же 10 ?
По логике нужны лицензии для 10 пользователей.
С процессорами непонятно… А если например на виртуалке четыре восьмиядерных процессора? Получается что нужно 4*8/2 = 16 лицензий? Или всё же только по ядрам 8/2 = 4 лицензии?
Учитываются все ядра на всех процессорах. Т.е.
4*8/2 = 16
лицензийА у вас на ноде виртуализации 4 физических процессора? Какой тайный смысл заключается в том, чтобы давать виртуалке такое количество ядер и процов? Сильно сомневаюсь в необходимости давать более 2х сокетов на ВМ. А уж отсыпать на одну ВМ 32 ядра — и вовсе кажется мне сомнительным мероприятием.
А кто-то разбирался с лицензированием SQL на Linux, например для докера или напрямую в ubuntu нужно ставить лицензии или в свободной ОС и ПО тоже свободное (щедрость от Microsoft)?
Дешевле отсидеть за пиратство.
Добрый день! Помогите разобраться. Скажите пожалуйста, сколько необходимо лицензий SQL CAL, если напрямую с базой данных (средствами SQL Server Management Studio) работают 3 пользователя (администраторы и не только).
Кроме того, есть еще несколько серверных программ (например 2 программы, они подключаются к БД через одну учетную запись), которые взаимодействуют с БД, в зависимости от действий пользователей на сайте (регистрация, авторизация, добавление постов и так далее).
База данных и серверные программы выполняются на одной машине.
Как в этом случае приобретаются лицензии? Нужно ли дополнительно лицензировать каждую серверную программу? Или достаточно приобрести лицензии только для 3 пользователей?
Серверные программы также нужно лицензировать как отдельных пользователей. А вот как быть, если через них по сути работают другие (внешний пользователи сайта) — не знаю.
На мой вгляд все эти пользователи также подлежат лицензированию.
В вашем случае получается проще нужно лицензировать ядра и не думать о CAL лицензиях, либо смотреть в сторону Web Edition – специальная редакция для веб-хостингов (провайдеров), распространяется только в рамках Microsoft Services Provider License Agreement (SPLA);
Не очень понимаю где и какие программные ограничения. Если например я в продакшн ставлю
бесплатную девеловер, то кроме юридических вопросов мне это чем-то грозит? Как скуль определит, что у меня за ним стоит 1С, и будет ли отключаться? Если директор скажет «надо чтобы просто работало, денег нет», то просто икать кряки или там только юридические ограничения?
В случае с developer это чисто юридические ограничения.