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

Как посчитать количество установленных лицензий sql

Как посчитать количество установленных лицензий sql

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

В Microsoft SQL Server ключевую информацию можно получить с помощью запроса к представлениям sys.dm_os_windows_info, sys.dm_server_services и параметров SERVERPROPERTY. Они позволяют уточнить, какая редакция сервера установлена, используется ли лицензирование на процессор или на CAL (Client Access License), а также активированы ли дополнительные экземпляры.

Для корпоративных систем с большим числом серверов удобнее использовать PowerShell или WMI-запросы. Они дают возможность собрать данные о лицензиях сразу с нескольких узлов, что ускоряет инвентаризацию. При необходимости результаты можно экспортировать в CSV или JSON для последующего анализа и сверки с данными центра лицензирования.

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

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

Для определения типа лицензии SQL Server через SSMS откройте новое окно запроса и выполните команду:

SELECT SERVERPROPERTY('Edition'), SERVERPROPERTY('ProductVersion'), SERVERPROPERTY('LicenseType');

Параметр Edition отобразит редакцию SQL Server (например, Enterprise, Standard, Express). Значение ProductVersion покажет точную версию сборки. Поле LicenseType может содержать данные о способе лицензирования, например DISABLED (при активации по ядрам) или PER_SEAT (лицензирование по пользователям или устройствам).

Если значение LicenseType отсутствует, уточните модель лицензирования через свойства экземпляра. Для этого в Object Explorer щёлкните правой кнопкой по серверу, выберите пункт Properties и откройте вкладку General – здесь указана редакция и версия, по которым можно определить применяемый тип лицензии.

Также полезно проверить сведения о ключе продукта и активации с помощью SQL Server Installation Center, запустив раздел Maintenance → Edition Upgrade. Это позволит убедиться, что установленный экземпляр соответствует приобретённой лицензии.

Определение количества лицензий с помощью системных представлений и запросов T-SQL

Для получения информации о лицензиях SQL Server можно использовать системные представления и функции, доступные через T-SQL. Основные данные о типе лицензирования и количестве подключений находятся в динамических представлениях sys.dm_os_performance_counters, sys.configurations и sys.syslogins.

Чтобы определить текущий режим лицензирования, выполните запрос:

SELECT SERVERPROPERTY('LicenseType') AS LicenseType,
SERVERPROPERTY('NumLicenses') AS NumLicenses;

Поле LicenseType возвращает значение PER_SEAT или PER_PROCESSOR, а NumLicenses – зарегистрированное число лицензий. Если результат равен NULL, сервер работает в режиме Core-based Licensing.

Для анализа фактического количества активных подключений можно использовать:

SELECT COUNT(DISTINCT login_name) AS ActiveUsers
FROM sys.dm_exec_sessions
WHERE is_user_process = 1;

Этот запрос позволяет оценить нагрузку и приблизительное количество одновременно работающих пользователей. Для уточнения количества логинов, имеющих право подключения, примените:

SELECT COUNT(*) AS RegisteredLogins
FROM sys.syslogins
WHERE isntname = 0 AND hasaccess = 1;

В сочетании эти запросы дают представление о лицензировании и фактическом использовании ресурсов SQL Server. Полученные данные можно использовать при аудите и планировании обновления лицензий.

Проверка данных о лицензиях через SQL Server Configuration Manager

Для получения сведений о типе лицензирования и версии установленного экземпляра SQL Server откройте SQL Server Configuration Manager. Этот инструмент отображает активные службы и связанные с ними параметры конфигурации.

В левой панели выберите раздел SQL Server Services. В правой части окна найдите службу SQL Server (MSSQLSERVER) или экземпляр с конкретным именем. Откройте свойства службы через контекстное меню и перейдите на вкладку Advanced.

В поле Edition указана редакция продукта (например, Enterprise, Standard, Express). Поле Version показывает номер сборки, по которому можно определить соответствие редакции лицензии. Эти данные позволяют сверить фактический тип установленной версии с тем, что зарегистрировано в документации или лицензионном соглашении.

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

Для последующей сверки сохраните данные из окна свойств или выполните экспорт информации с помощью PowerShell-команды Get-WmiObject -Class Win32_Product, фильтруя результаты по SQL Server. Это упрощает централизованный контроль количества и типов установленных лицензий.

Анализ лицензий в журналах установки и файлах отчётов SQL Server

Анализ лицензий в журналах установки и файлах отчётов SQL Server

При проверке количества установленных лицензий SQL Server важно анализировать журналы установки и файлы отчётов, так как именно в них фиксируются параметры активации и сведения о типе лицензирования. Основные данные можно найти в каталоге C:\Program Files\Microsoft SQL Server\Setup Bootstrap\Log\, где каждый подпапка соответствует определённой установке или обновлению.

В файле Summary.txt отображаются сведения о версии SQL Server, методе установки (Evaluation, Developer, Standard, Enterprise) и параметрах лицензирования. Для уточнения используемого режима (по ядрам или на сервер/пользователь) стоит проверить файл Detail.txt – в нём содержатся строки с параметрами PIDKEY и Edition, по которым можно определить тип ключа и вариант лицензии.

Для корпоративных сред полезно автоматизировать сбор этих данных через PowerShell. Команда Get-Content с фильтрацией по ключевым словам «PID», «Edition», «ProductKey» позволит выявить все установленные экземпляры SQL Server и сопоставить их с учётной системой лицензий.

Дополнительно стоит проанализировать отчётные файлы ErrorLog в каталоге \MSSQL\Log\ – при старте SQL Server в них записывается точное издание и номер сборки. Эти сведения помогают определить, какие лицензии активированы и какие инстансы требуют проверки или обновления ключей.

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

Получение сведений о лицензиях с помощью PowerShell-скриптов

Получение сведений о лицензиях с помощью PowerShell-скриптов

PowerShell позволяет быстро получить данные о лицензировании SQL Server без необходимости вручную открывать интерфейсы или использовать сторонние утилиты. Для этого применяются команды WMI и SMO, а также запросы к реестру и системным представлениям SQL.

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

Invoke-Command -ComputerName "SQLSERVER01" -ScriptBlock {
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\Setup" |
Select-Object Edition, Version, ProductID
}

Для подключения к экземпляру SQL и извлечения информации о лицензии через SMO:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null
$server = New-Object ('Microsoft.SqlServer.Management.Smo.Server') "SQLSERVER01"
$server.Edition
$server.Version

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

Для автоматизации проверки нескольких серверов:

$servers = @("SQLSERVER01", "SQLSERVER02", "SQLSERVER03")
foreach ($s in $servers) {
$info = Invoke-Command -ComputerName $s -ScriptBlock {
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\Setup" |
Select-Object Edition, Version, ProductID
}
Write-Output "$s - $($info.Edition) - $($info.Version)"
}

Результат можно сохранить в CSV для последующего анализа:

... | Export-Csv "C:\SQL_Licenses.csv" -NoTypeInformation -Encoding UTF8

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

  • Использовать учетную запись с правами администратора на каждом сервере.
  • Перед выполнением скриптов убедиться, что разрешено удалённое выполнение PowerShell (Enable-PSRemoting).
  • Для точного учета CAL или Core лицензий – дополнительно анализировать данные из SQL Server Management Studio (раздел «Свойства сервера»).
  • Регулярно сохранять результаты в централизованное хранилище (например, в таблицу инвентаризации).

Использование SQL Server Licensing Tool и сторонних утилит для подсчёта лицензий

SQL Server Licensing Tool предоставляет точный способ оценки активных лицензий на сервере. Для проверки используйте команду Setup.exe /ACTION=EditionUpgrade /UIMODE=Normal /PID=YourProductKey в каталоге установки SQL Server. Инструмент отображает количество установленных экземпляров, их редакции и соответствие лицензированию по ядрам или CAL. Результаты сохраняются в CSV или HTML формате, что облегчает документирование.

При использовании ядровой модели Licensing Tool позволяет идентифицировать каждый активный процессор и количество виртуальных процессоров на виртуальных машинах. Для редакции Enterprise важно проверять соответствие кластеров Always On, так как инструмент отображает только активные ноды.

Сторонние утилиты, например, Redgate SQL License Manager или ManageEngine SQL Server Manager Plus, автоматически сканируют все экземпляры SQL Server в сети. Они собирают данные о версии, редакции, количестве подключённых пользователей и активности лицензий. Многие утилиты позволяют формировать отчёты по серверу, датацентру или всей инфраструктуре, а также сравнивать их с приобретёнными лицензиями для выявления недоиспользованных или избыточных лицензий.

При выборе стороннего решения рекомендуется проверять совместимость с версиями SQL Server от 2012 до 2022 и поддержкой виртуализации. Для точного подсчёта лицензий на виртуальных машинах утилиты должны учитывать Hyper-V и VMware с корректным определением количества виртуальных ядер.

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

Как интерпретировать результаты проверки и определить соответствие лицензированию

После выполнения проверки SQL Server важно внимательно анализировать полученные данные, чтобы определить соответствие установленного программного обеспечения требованиям лицензирования. Основное внимание уделяется количеству установленных экземпляров, версии SQL и типу лицензий (Core-based или CAL).

Параметр Описание Как интерпретировать
Версия SQL Указывает редакцию (Standard, Enterprise, Developer, Express) и номер сборки Лицензирование зависит от редакции: Developer и Express не требуют лицензий для тестирования, Standard и Enterprise – платные. Проверяйте соответствие версии приобретённой лицензии.
Количество установленных экземпляров Количество инсталляций SQL на физических или виртуальных серверах Сравните с количеством лицензий. Для Core-based лицензий учитывается общее количество ядер на сервере, для CAL – количество пользователей или устройств.
Тип лицензии Core-based или CAL Для Core-based лицензий суммируйте ядра и убедитесь, что они покрыты приобретёнными лицензиями. Для CAL проверьте количество активных пользователей или устройств.
Состояние активации Подтверждает, активирован ли экземпляр SQL Server Неактивированные экземпляры могут нарушать условия лицензирования, даже если физически установлены.
Виртуализация Количество виртуальных машин с установленным SQL При Core-based лицензировании необходимо лицензировать все физические ядра, либо использовать виртуальные лицензии с учётом ограничений виртуализации.

Рекомендации по анализу:

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

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

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

Каким образом можно узнать количество лицензий SQL Server на конкретном сервере?

Для этого можно воспользоваться SQL Server Management Studio. В разделе «Службы» или «Свойства сервера» отображается информация о типе лицензии. Дополнительно можно выполнить команду T-SQL: SELECT * FROM sys.dm_server_registry, чтобы увидеть сведения о лицензировании и зарегистрированных ключах.

Можно ли определить количество лицензий SQL через PowerShell?

Да, с помощью PowerShell можно получить сведения о лицензиях SQL Server. Например, с использованием WMI-запроса: Get-WmiObject -namespace «root\Microsoft\SqlServer\ComputerManagement14» -class SqlServiceAdvancedProperty. Этот метод позволяет проверить установленные экземпляры SQL и их лицензионные параметры.

Что делать, если количество лицензий SQL не совпадает с зарегистрированными пользователями?

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

Существует ли стандартная команда для проверки числа активных лицензий SQL Server?

Прямой команды для вывода количества лицензий нет, так как SQL Server использует разные модели лицензирования. Можно использовать SQL Server Management Studio для просмотра типа лицензии и количества установленных экземпляров. Также можно просмотреть журнал установки или выполнить T-SQL-запросы к системным таблицам, чтобы получить сведения о ключах и типе лицензии.

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