Microsoft SQL Server не предоставляет централизованного графического интерфейса для просмотра лицензии, что усложняет контроль за соблюдением условий использования. Однако существует несколько точных методов, позволяющих получить информацию о типе и статусе лицензии установленного экземпляра.
Один из надёжных способов – выполнение запроса через системную хранимую процедуру xp_readerrorlog. Лицензионные сведения часто фиксируются в журнале ошибок при запуске сервера. Запрос EXEC xp_readerrorlog 0, 1, N’licensing’ позволяет извлечь записи, содержащие сведения о лицензировании, включая режим (например, Core-based или CAL) и количество лицензированных ядер.
Другой подход – использование свойства SERVERPROPERTY. Запрос SELECT SERVERPROPERTY(‘Edition’), SERVERPROPERTY(‘ProductVersion’), SERVERPROPERTY(‘LicenseType’) возвращает редакцию SQL Server, версию и лицензионный тип, если он доступен. Важно учитывать, что поле LicenseType может возвращать NULL – это связано с особенностями политики Microsoft и не всегда указывает на отсутствие лицензии.
Для серверов, работающих в режиме Core, стоит также проверить количество используемых ядер через sys.dm_os_sys_info или sys.dm_os_sys_memory. Это важно для сопоставления с лицензированными ресурсами и обнаружения возможных несоответствий.
Регулярная проверка лицензий необходима не только для соблюдения лицензионных соглашений, но и для оценки масштабирования, планирования затрат и предотвращения штрафов при аудитах. Эти методы позволяют получить технически точную информацию без необходимости использования сторонних утилит.
Как определить тип лицензии через SQL Server Management Studio
Откройте SQL Server Management Studio и подключитесь к экземпляру SQL Server с правами администратора.
Откройте новое окно запроса и выполните следующий T-SQL:
SELECT SERVERPROPERTY('Edition'), SERVERPROPERTY('LicenseType'), SERVERPROPERTY('NumLicenses');
Edition возвращает информацию о редакции SQL Server, например, «Enterprise Edition» или «Standard Edition». Это косвенно указывает на тип лицензирования – Enterprise чаще всего используется с серверной лицензией и клиентскими лицензиями (CAL), а Standard может быть лицензирован как по ядрам, так и с CAL.
LicenseType возвращает «DISABLED» в большинстве современных версий SQL Server, особенно с моделью лицензирования по ядрам, где информация о лицензии не сохраняется в системных свойствах.
NumLicenses также часто возвращает NULL или «0» при использовании лицензирования по ядрам, так как количество лицензий не указывается напрямую.
Для более точной информации используйте утилиту SQL Server Installation Center: запустите setup.exe
с установочного носителя, перейдите в раздел “Tools” → “Installed SQL Server features discovery report”. В отчёте ищите информацию о модели лицензирования (Per Core или Server + CAL).
Если сервер управляется через SQL Server Configuration Manager, дополнительную информацию можно получить через средство SQL Server Error Log, выполнив:
EXEC xp_readerrorlog 0, 1, N'license', NULL, NULL, NULL, N'asc';
Это отобразит записи, связанные с лицензированием, зафиксированные при запуске сервера.
Проверка информации о лицензии с помощью T-SQL запроса
Для получения сведений о типе лицензии в Microsoft SQL Server используется представление sys.dm_os_sys_info. Оно позволяет извлечь информацию о режиме лицензирования и количестве задействованных сокетов и ядер.
Пример запроса:
SELECT
sqlserver_start_time,
cpu_count,
hyperthread_ratio,
physical_memory_kb,
virtual_machine_type_desc
FROM sys.dm_os_sys_info;
Поле cpu_count показывает общее количество логических процессоров, доступных SQL Server. hyperthread_ratio указывает количество потоков на одно физическое ядро, что помогает оценить физическую архитектуру сервера.
virtual_machine_type_desc отражает, запущен ли экземпляр SQL Server на физическом сервере или в виртуальной среде. Это важно при определении ограничений по лицензии, так как в виртуализированных средах действуют иные правила лицензирования.
Для определения типа лицензии SQL Server (например, Core-based или CAL-based) прямых T-SQL запросов нет, так как эта информация не хранится в системных представлениях. Однако, можно использовать расширенную хранимую процедуру:
EXEC xp_readerrorlog 0, 1, N'SQL Server is';
Использование PowerShell для получения сведений о лицензии SQL Server
Для получения информации о лицензии SQL Server с помощью PowerShell необходимо использовать WMI-класс SoftwareLicensingService
и доступ к SQL Server через SMO (SQL Server Management Objects). Перед началом убедитесь, что модуль SqlServer
установлен: Install-Module -Name SqlServer
.
Команда для подключения к экземпляру SQL Server:
$server = New-Object Microsoft.SqlServer.Management.Smo.Server "Имя_сервера"
Проверка версии и издания SQL Server:
$server.Information.Version
$server.Information.Edition
Чтобы определить, активирована ли лицензия, можно использовать запрос к реестру:
Get-ItemProperty -Path "HKLM:\Software\Microsoft\Microsoft SQL Server\Instance Names\SQL"
Для сбора сведений о ключе продукта:
Get-WmiObject -query 'select * from SoftwareLicensingService'
Если SQL Server работает на Windows Server, ключ продукта может быть доступен через:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object -ExpandProperty SerialNumber
Важно: SQL Server не всегда предоставляет детальную лицензионную информацию через стандартные каналы. В таких случаях рекомендуется использовать SQL Server Installation Center
или средство SQL Server Setup Discovery Report
для получения точных данных.
Извлечение данных о лицензии из системного представления SERVERPROPERTY
Для получения сведений о типе лицензии установленного экземпляра SQL Server используется функция SERVERPROPERTY
. Ключевое свойство – Edition
, возвращающее информацию о редакции сервера, которая напрямую связана с моделью лицензирования.
Выполните следующий запрос:
SELECT SERVERPROPERTY('Edition') AS Edition;
Значение Edition
может быть, например, Enterprise Edition: Core-based Licensing
или Standard Edition (64-bit)
. Формулировка указывает на схему лицензирования: «Core-based» означает лицензирование по ядрам, отсутствие подобной пометки – лицензия на сервер + CAL.
Дополнительно можно использовать свойства ProductVersion
и ProductLevel
для понимания выпуска и уровня обновлений:
SELECT
SERVERPROPERTY('ProductVersion') AS Version,
SERVERPROPERTY('ProductLevel') AS Level;
Полученные данные позволяют определить, подпадает ли установленная редакция под лицензионные ограничения, а также принять решение о необходимости соблюдения требований по количеству лицензированных ядер или клиентских лицензий.
Свойство EngineEdition
возвращает числовой код, обозначающий тип установки. Для полноценной серверной редакции значение будет 3
(Enterprise, Standard и др.), для Express – 4
, для Developer – 2
. Это значение может использоваться для автоматической классификации среды.
Для интерпретации результатов рекомендуется использовать официальную документацию Microsoft, где перечислены возможные значения свойств и их соответствие конкретным редакциям и схемам лицензирования.
Анализ реестра Windows для получения сведений о лицензии SQL Server
Реестр Windows содержит ключевые сведения о конфигурации SQL Server, включая информацию о лицензии. Для доступа к этим данным используется редактор реестра (regedit), но действия требуют административных прав.
- Откройте редактор реестра:
Win + R → regedit
- Перейдите в раздел:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server
- Найдите вложенные идентификаторы экземпляров SQL Server, например:
MSSQL15.MSSQLSERVER
- Перейдите в подраздел:
Setup
Ключи, содержащие сведения о лицензировании:
Edition
– указывает редакцию SQL Server (например, Enterprise, Standard)EditionType
– определяет тип лицензии (Core-based, Server+CAL)ProductCode
– GUID продукта, используется при валидации лицензииProductID
– уникальный идентификатор установленного продуктаVersion
– полная версия установленного SQL Server
Для автоматизации получения данных возможно использовать PowerShell:
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\Setup"
Если SQL Server установлен на 64-битной системе, информация может находиться в ветке WOW6432Node
:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SQL Server
Рекомендуется экспортировать найденные ключи в файл для последующего анализа или аудита:
reg export "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\Setup" license_info.reg
Получение данных о лицензии через SQL Server Installation Center
Первый шаг – запуск SQL Server Installation Center. Для этого откройте меню «Пуск», найдите SQL Server Installation Center и запустите его. После открытия утилиты, перейдите в раздел «Tools» (Инструменты), который находится в верхней части интерфейса. Этот раздел содержит несколько опций для работы с сервером, включая информацию о текущей лицензии.
В разделе «Tools» выберите опцию «Installed SQL Server features discovery report» (Отчет об установленных компонентах SQL Server). Этот отчет предоставляет информацию о всех установленных компонентах SQL Server, а также о лицензировании, включая тип лицензии (например, по процессорам или по количеству пользователей) и детали о сроках действия лицензии, если они присутствуют. Эти данные могут быть полезны для проверки соответствия установленной лицензии с текущими требованиями организации.
После выполнения отчета, SQL Server Installation Center предложит подробную информацию, которая включает как сведения о типе лицензии, так и дату активации и возможные ограничения, связанные с лицензией. Важно отметить, что некоторые версии SQL Server могут не содержать полной информации о лицензии в отчете, если лицензия была приобретена через сторонних поставщиков или использовалась пробная версия.
В случае, если информация о лицензии не отображается, рекомендуется проверить настройки сервера или использовать другие способы, например, команду SQL, чтобы получить более точные данные о текущей лицензии и ее параметрах.
Вопрос-ответ:
Как можно проверить текущие лицензии в MS SQL Server?
Для проверки лицензий в MS SQL Server можно использовать несколько методов. Один из самых распространенных способов — это выполнение запроса в системной базе данных. Например, с помощью команды `SELECT SERVERPROPERTY(‘ProductLevel’)` можно узнать уровень продукта, а команда `SELECT SERVERPROPERTY(‘Edition’)` предоставит информацию о редакции. Также можно использовать SQL Server Management Studio (SSMS), где в разделе «Сведения о сервере» можно увидеть подробности о лицензии.
Какие виды лицензий существуют для MS SQL Server и чем они отличаются?
Для MS SQL Server существует несколько типов лицензий, включая лицензии на процессор и лицензии на пользователей. Лицензия на процессор предполагает оплату за количество процессоров на сервере, в то время как лицензия на пользователей или устройства зависит от количества пользователей или устройств, которые подключаются к серверу. Эти варианты лицензирования предоставляют разные подходы к учету и расчёту затрат, в зависимости от того, как используется сервер и какие потребности в масштабируемости существуют.
Какие ошибки могут возникнуть при неправильном использовании лицензий в MS SQL Server?
Неправильное использование лицензий в MS SQL Server может привести к нескольким проблемам. Во-первых, это может вызвать юридические последствия, если использование лицензий будет несанкционированным. Во-вторых, при превышении лимита на количество пользователей или устройств могут возникнуть ошибки доступа или отказ в подключении. Также могут возникнуть проблемы с производительностью, если сервер работает с большим количеством подключений при ограниченной лицензии на процессоры или пользователей. В таких случаях необходимо скорректировать лицензионную модель или приобрести дополнительную лицензию для обеспечения корректной работы системы.