Проверка лицензий MS SQL Server и доступные методы

Как посмотреть лицензии ms sql server

Как посмотреть лицензии ms sql server

Лицензирование MS SQL Server напрямую влияет на функциональность и масштабируемость баз данных. Каждая редакция сервера – от Express до Enterprise – имеет свои ограничения по количеству ядер, памяти и подключений. Игнорирование лицензий может привести к штрафам и блокировкам функционала.

Существует несколько методов проверки лицензий: использование встроенных команд T-SQL, проверка через SQL Server Management Studio и анализ ключей в реестре Windows. Команда SELECT SERVERPROPERTY(‘LicenseType’) позволяет определить тип лицензии, а SELECT SERVERPROPERTY(‘NumLicenses’) – количество доступных лицензий при установленной версии с ограничениями по CAL.

Для редакций, лицензируемых по ядрам, важно контролировать количество физических и виртуальных процессоров. Виртуализированные среды требуют учета всех виртуальных ядер, выделенных для инстанса SQL Server. Отдельное внимание стоит уделить сбору данных о подключениях по CAL, особенно при использовании серверов Reporting Services и Analysis Services.

Регулярная проверка лицензий помогает планировать обновления и предотвращать конфликты с политиками Microsoft. Оптимальная практика – документировать все установленные экземпляры SQL Server, фиксировать тип лицензий и вести журнал изменений конфигурации, чтобы обеспечить соответствие требованиям аудита.

Определение установленной редакции и версии MS SQL Server

Определение установленной редакции и версии MS SQL Server

Для точного определения редакции и версии MS SQL Server применяются встроенные средства сервера и системные представления. Это критично для корректного контроля лицензий и совместимости приложений.

Основные методы:

  • Использование функции SERVERPROPERTY:
SELECT
SERVERPROPERTY('ProductVersion') AS Версия,
SERVERPROPERTY('ProductLevel') AS УровеньОбновления,
SERVERPROPERTY('Edition') AS Редакция,
SERVERPROPERTY('EngineEdition') AS ТипДвижка;
  • Описание полей:
    • ProductVersion – полный номер версии SQL Server (например, 16.0.5089.0).
    • ProductLevel – уровень обновления: RTM, SP1, SP2 и т.д.
    • Edition – редакция: Enterprise, Standard, Express, Developer и другие.
    • EngineEdition – тип движка: 1 (Personal), 2 (Standard), 3 (Enterprise), 4 (Express), 5 (Azure SQL Database).
  • Системная представление sys.servers и sys.dm_server_services:
SELECT
s.name AS ИмяСервера,
sv.servicename AS Служба,
sv.status_desc AS Статус,
sv.startup_type_desc AS ТипЗапуска
FROM sys.servers s
JOIN sys.dm_server_services sv ON s.server_id = sv.server_id;

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

  • PowerShell:
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"

Через реестр PowerShell позволяет получить список инстансов и сопоставить их с редакцией и версией.

Рекомендации:

  1. Для корпоративной среды проверяйте все экземпляры SQL Server, так как разные инстансы могут иметь разные редакции.
  2. Используйте SERVERPROPERTY для быстрой проверки без необходимости перезагрузки сервера.
  3. Сравнивайте полученные версии с лицензиями, чтобы выявить несоответствия.
  4. Регулярно фиксируйте версии и редакции для аудита и планирования обновлений.

Проверка типа лицензии через SQL Server Management Studio

Проверка типа лицензии через SQL Server Management Studio

Для определения типа лицензии SQL Server через SQL Server Management Studio (SSMS) используется системная представление sys.dm_server_registry и функция SERVERPROPERTY. Процесс выполняется напрямую в окне запроса.

Простейший способ – выполнить следующий SQL-запрос:

SELECT
SERVERPROPERTY('ProductVersion') AS Версия,
SERVERPROPERTY('ProductLevel') AS УровеньОбновления,
SERVERPROPERTY('Edition') AS Редакция,
SERVERPROPERTY('LicenseType') AS ТипЛицензии,
SERVERPROPERTY('NumLicenses') AS КоличествоЛицензий;

Объяснение полей:

Поле Описание
Версия Номер версии SQL Server (например, 15.0.2000.5)
УровеньОбновления Указывает Service Pack или обновление (RTM, SP1, SP2)
Редакция Определяет редакцию: Enterprise, Standard, Express, Developer и т.д.
ТипЛицензии Отображает способ лицензирования: PER_SEAT или PER_CORE. В некоторых редакциях поле может быть пустым.
КоличествоЛицензий Количество лицензий на сервер, если указано; для лицензирования по ядрам возвращается NULL

Для более детальной проверки можно использовать представление sys.dm_server_registry, выбрав ключи из ветки HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\InstanceName\MSSQLServer\Setup. Например:

SELECT
value_name AS Параметр,
value_data AS Значение
FROM sys.dm_server_registry
WHERE registry_key LIKE '%MSSQLServer\\Setup%';

В таблице возвращаются ключи Edition, DigitalProductId и другие, которые позволяют подтвердить лицензионный статус и тип редакции.

Рекомендации:

  • Запросы выполнять от учетной записи с правами sysadmin.
  • Для серверов с несколькими экземплярами проверку проводить отдельно для каждого экземпляра.
  • Для версий SQL Server 2012 и выше информация о лицензии через SERVERPROPERTY('LicenseType') корректно возвращается только для Retail и Volume лицензий, для Express и Developer поле пустое.

Использование команды SELECT для получения сведений о лицензии

Использование команды SELECT для получения сведений о лицензии

Для получения информации о лицензии MS SQL Server можно использовать системные представления и функции через команду SELECT. Основной источник данных – представление sys.server_principals и функция SERVERPROPERTY.

Команда SELECT SERVERPROPERTY('Edition'), SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('ProductVersion'); возвращает редакцию сервера, уровень обновления и точную версию продукта. Это позволяет определить, какая лицензия установлена и соответствует ли она требованиям предприятия.

Для анализа числа доступных процессоров и потоков используют SELECT cpu_count, hyperthread_ratio FROM sys.dm_os_sys_info;. Значения помогают оценить соответствие лицензии редакции SQL Server, например, Standard ограничивает количество ядер для лицензирования.

Информация о типе лицензирования CAL или Per Core доступна через SELECT SERVERPROPERTY('LicenseType'); и SELECT SERVERPROPERTY('NumLicenses');. Эти значения критичны при проведении аудита, так как показывают, соответствует ли фактическое использование лицензии условиям Microsoft.

Для детальной проверки отдельных компонентов, таких как Reporting Services или Analysis Services, применяют SELECT SERVERPROPERTY('IsIntegratedSecurityOnly'); и другие специфические свойства, отражающие активные лицензии на серверные роли.

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

Анализ лицензий через SQL Server Configuration Manager

SQL Server Configuration Manager не предоставляет прямого отображения типа лицензии, но позволяет собирать данные, которые помогают определить соответствие установленной версии лицензии требованиям организации.

Основные действия для анализа лицензий через Configuration Manager:

  1. Открыть SQL Server Configuration Manager и выбрать соответствующую версию сервера.
  2. Перейти в раздел SQL Server Services для проверки запущенных экземпляров и их состояния.
  3. Отметить используемые экземпляры, так как каждый активный экземпляр требует отдельной лицензии или CAL в зависимости от модели лицензирования.
  4. Через свойства каждого сервиса проверить путь к исполняемым файлам (Binary Path), чтобы определить установленную редакцию SQL Server (Express, Standard, Enterprise).

Дополнительно рекомендуется:

  • Сверить версии и патч-уровни с официальной документацией Microsoft для точного соответствия лицензии.
  • Проверить наличие кластеров и распределённых экземпляров, так как в некоторых редакциях лицензирование зависит от количества физических процессоров и серверов.
  • Документировать все активные службы SQL Server, чтобы при аудите можно было подтвердить использование лицензий.

Результаты анализа через Configuration Manager следует использовать совместно с отчетами из SQL Server Management Studio, где доступна информация о версии, редакции и активности сервера. Такой подход минимизирует риск несоответствия лицензий и упрощает подготовку к внутреннему или внешнему аудиту.

Просмотр лицензий с помощью PowerShell

Просмотр лицензий с помощью PowerShell

Для проверки лицензий MS SQL Server через PowerShell используется модуль SQLPS или SqlServer. Основной командлет – Get-ItemProperty с указанием реестра, где хранятся сведения о лицензировании.

Пример запроса для получения информации о версии и ключе продукта:

Import-Module SqlServer
$instance = "MSSQLSERVER"
$regPath = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\$instance\Setup"
Get-ItemProperty -Path $regPath | Select-Object Edition, ProductCode, SetupType

Edition отображает установленный тип лицензии (Standard, Enterprise, Developer), ProductCode – GUID продукта, SetupType – метод установки (Core-based или CAL-based).

Для проверки активных подключений и лицензий CAL можно использовать WMI-запрос:

Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement14" -Class SqlServiceAdvancedProperty |
Where-Object {$_.PropertyName -eq "LicenseType"} |
Select-Object SQLServiceType, PropertyStrValue

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

Для автоматизации аудита рекомендуется создавать скрипты, которые собирают данные с нескольких серверов, используя Invoke-Command и массив имен экземпляров SQL Server.

PowerShell также позволяет экспортировать сведения в CSV для последующего анализа:

Get-ItemProperty -Path $regPath | Select-Object Edition, ProductCode, SetupType | Export-Csv "C:\SQL_Licenses.csv" -NoTypeInformation

Эти методы обеспечивают точный контроль лицензий без необходимости входа в GUI SQL Server Management Studio.

Сравнение CAL и Core лицензий для текущей установки

Для текущей установки SQL Server выбор между CAL (Client Access License) и Core лицензиями зависит от числа пользователей и устройств, а также от архитектуры серверов. CAL лицензия требует отдельной покупки лицензий для каждого пользователя или устройства, подключающегося к серверу. Для небольших команд до 50 пользователей CAL обычно экономичнее, особенно если доступ ограничен фиксированным числом сотрудников.

Core лицензии рассчитываются на количество физических или виртуальных ядер процессора на сервере. Минимум – 4 ядра на сервер, дополнительные ядра лицензируются по парам. Core лицензирование оправдано при большом числе подключений, при высоких нагрузках или когда клиентская база растет динамично, поскольку не требует отслеживания количества пользователей.

При сравнении затрат необходимо учитывать среднее число одновременных подключений и планируемый рост. Например, сервер с 8 ядрами при 200 пользователях, подключающихся одновременно, Core лицензия часто дешевле суммарной стоимости 200 CAL. CAL предпочтительна, если сервер обслуживает ограниченное число внутренних пользователей и внешние подключения минимальны.

Для текущей установки стоит провести точный аудит пользователей, устройств и схем подключения. Если часть пользователей получает доступ через приложения с ограниченным числом сервисных аккаунтов, Core лицензия может быть выгоднее, так как CAL требует лицензирования каждого аккаунта отдельно. Анализ нагрузки по CPU и количеству подключений позволяет оптимизировать выбор и снизить риски перерасхода бюджета.

Рекомендуется документировать результаты аудита и сравнивать их с требованиями лицензирования Microsoft, учитывая, что при миграции на новые версии SQL Server или виртуализацию вычислительных ресурсов схема Core лицензирования может менять экономическую эффективность по сравнению с CAL.

Проверка лицензий сторонними инструментами и скриптами

Для анализа лицензий MS SQL Server можно использовать специализированные утилиты, которые считывают данные напрямую из реестра и системных представлений. Популярные инструменты включают SQL Server Management Studio (SSMS) с расширениями, PowerShell-модули и сторонние решения вроде SQLLicensing или ApexSQL Manage.

PowerShell предоставляет прямой доступ к свойствам экземпляров SQL через WMI и SMO. Команды типа Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement15" -Class SqlServiceAdvancedProperty позволяют получать сведения о типе лицензии, Edition и Version. Для массовой проверки нескольких серверов удобно использовать скрипты с подключением по именам экземпляров и сбором результатов в CSV.

Сторонние программы, такие как SQLLicensing, автоматически определяют тип лицензии (Core-Based, Server+CAL) и количество используемых лицензий, формируют отчет по каждой инстанции. Эти решения особенно полезны для крупных инфраструктур с десятками серверов, так как минимизируют риск пропуска активных инстанций.

При использовании скриптов важно проверять версию SQL Server, так как структура системных представлений меняется: для 2012–2014 Edition определяется через SERVERPROPERTY('Edition'), для 2016 и выше дополнительно учитываются свойства EngineEdition и LicensingType. Скрипты можно интегрировать в периодические задачи для мониторинга соответствия лицензий.

Рекомендуется комбинировать результаты сторонних инструментов с официальными данными из Volume Licensing Service Center или Microsoft Partner Network, чтобы исключить расхождения и подтвердить законность используемых лицензий.

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

Регулярные проверки и ведение учета лицензий

Регулярные проверки и ведение учета лицензий

Регулярная проверка лицензий MS SQL Server должна выполняться не реже одного раза в квартал. Для этого рекомендуется использовать встроенные инструменты SQL Server, такие как SQL Server Management Studio (SSMS) с запросом к представлению sys.server_principals и sys.dm_server_services, а также команду SELECT SERVERPROPERTY('Edition'), SERVERPROPERTY('NumLicenses') для точного определения текущего состояния лицензий.

Ведение учета лицензий требует создания централизованной базы данных или таблицы, где фиксируются: версия сервера, тип лицензии (Core, CAL), дата установки, количество выделенных лицензий и текущие пользователи. Каждая запись должна содержать уникальный идентификатор сервера и дату последней проверки.

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

Автоматизация учета возможна через PowerShell-скрипты, которые собирают информацию о всех инстансах SQL Server в сети и формируют отчет в формате CSV или Excel. Такой подход позволяет отслеживать изменения конфигураций, выявлять неиспользуемые лицензии и прогнозировать потребности на следующий период.

Документы с результатами проверок следует хранить не менее трех лет для внутреннего аудита и подтверждения соответствия требованиям Microsoft. Все изменения в лицензировании должны фиксироваться с указанием даты, ответственного сотрудника и причины корректировки.

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

Вопрос-ответ:

Какие способы проверки лицензии MS SQL Server существуют без установки дополнительных программ?

Проверку лицензии можно выполнить через встроенные средства SQL Server. Например, команда `SELECT SERVERPROPERTY(‘Edition’), SERVERPROPERTY(‘ProductVersion’), SERVERPROPERTY(‘ProductLevel’)` позволяет получить информацию о редакции и версии установленного сервера. Также доступен просмотр лицензий через SQL Server Management Studio в разделе «Свойства сервера» на вкладке «Лицензия». Эти методы не требуют сторонних утилит и дают базовую информацию о типе лицензии и её активации.

Можно ли проверить количество лицензий по ядрам или по CAL для установленного SQL Server?

Да, SQL Server поддерживает два основных способа лицензирования: по ядрам и по клиентским лицензиям (CAL). Информацию о лицензировании по ядрам можно получить через команду `SELECT COUNT(*) FROM sys.dm_os_schedulers WHERE status = ‘VISIBLE ONLINE’`, которая отражает количество доступных процессорных логических ядер. Для CAL обычно ведется учет вручную, так как сервер не хранит детальный список активных клиентских лицензий. Важно сверять данные с приобретенными ключами или документами лицензирования.

Как проверить лицензию SQL Server через PowerShell?

Через PowerShell можно использовать WMI-классы для получения информации о SQL Server. Например, команда `Get-WmiObject -Namespace «root\Microsoft\SqlServer\ComputerManagement14» -Class SqlServiceAdvancedProperty | Where-Object {$_.PropertyName -eq «Edition»}` покажет редакцию сервера. Такой подход позволяет автоматизировать проверку нескольких серверов и собирать сведения о версиях и редакциях без прямого подключения к Management Studio.

Есть ли способ узнать, активирована ли лицензия SQL Server и не истек ли срок её действия?

Для оценки состояния лицензии можно использовать SQL Server Management Studio или запрос `SELECT SERVERPROPERTY(‘IsLicensed’)`. В некоторых редакциях отображается значение 1 для активной лицензии и 0 для неактивной. Также можно просмотреть сведения о сроке действия в свойствах ключа продукта через панель управления Windows или через команды `slmgr.vbs`. Это позволяет убедиться, что сервер работает легально и ключ ещё действителен.

Какие методы подходят для массовой проверки лицензий на нескольких серверах SQL одновременно?

Для проверки лицензий на нескольких серверах удобно использовать скрипты PowerShell или T-SQL с удаленным подключением. Через PowerShell можно задать список серверов и собрать сведения о редакции, версии и состоянии лицензии. В T-SQL доступно выполнение удаленных запросов через Linked Servers или Central Management Server. Такой подход помогает контролировать соответствие установленного ПО лицензиям и уменьшает риск нарушения правил использования.

Ссылка на основную публикацию