@@VERSION: примеры (SQL)

Получение информации о версии SQL Server
Раздел: Системные информационные функции, Системные
@@VERSION: nvarchar

Описание функции @@VERSION

Функция @@VERSION является системной и предназначена для получения сведений о версии, редакции и сборке текущего экземпляра Microsoft SQL Server, а также о версии операционной системы. Это скалярная функция, не принимающая аргументов. Возвращаемое значение имеет тип данных nvarchar.

Функция используется для диагностики, написания версионно-зависимого кода, проверки совместимости или документации окружения. Возвращаемая строка содержит информацию в следующем порядке: версия SQL Server, редакция, номер сборки, уровень обслуживания, архитектура сервера и данные об ОС.

Примеры вызова

Стандартное использование для получения полной информации:

SELECT @@VERSION;
Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)
	Sep 24 2019 13:48:23
	Copyright (C) 2019 Microsoft Corporation
	Developer Edition (64-bit) on Windows 10 Pro 10.0  (Build 19045: )

Использование в строке для формирования отчета:

PRINT 'Текущая версия сервера: ' + @@VERSION;

Аналоги в MS SQL Server

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

SELECT
  SERVERPROPERTY('ProductVersion') AS ProductVersion,
  SERVERPROPERTY('Edition') AS Edition,
  SERVERPROPERTY('ProductLevel') AS ProductLevel;

Динамическое административное представление sys.dm_os_sys_info содержит дополнительную системную информацию, такую как количество процессоров и объем физической памяти.

Функции в других СУБД

MySQL: Функция VERSION() возвращает строку версии сервера. Она проще и не включает сведения об ОС.

SELECT VERSION();
8.0.33

PostgreSQL: Функция version() выдает детализированную информацию, похожую на @@VERSION.

SELECT version();

Oracle: Запрос к представлению V$VERSION возвращает данные о версиях компонентов.

SELECT * FROM v$version WHERE banner LIKE 'Oracle%';

SQLite: Используется функция sqlite_version() для получения версии библиотеки.

SELECT sqlite_version();

Распространенные ошибки

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

DECLARE @ver INT = @@VERSION; -- Ошибка преобразования
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the nvarchar value 'Microsoft SQL Server ...' to data type int.

Ожидание, что результат будет постоянным для всей сессии. Информация актуальна на момент выполнения запроса, но перезапуск экземпляра сервера может изменить некоторые данные (например, уровень обслуживания после установки обновления).

Изменения в новых версиях

Содержимое возвращаемой строки меняется с выходом новых версий SQL Server. Например, в SQL Server 2022 изменился формат строки и добавилась информация о совместимости с Azure. Сама функция @@VERSION остается без изменений в синтаксисе, но ее вывод эволюционирует, отражая актуальные данные о сборке и платформе.

Расширенные сценарии использования

Парсинг строки для извлечения номера основной версии (major version):

Пример sql
SELECT
  @@VERSION AS FullVersion,
  PARSENAME(REPLACE(CAST(SERVERPROPERTY('ProductVersion') AS VARCHAR(20)), '.', '.'), 4) AS MajorVersion;
FullVersion                                                  MajorVersion
----------------------------------------------------------- ------------
Microsoft SQL Server 2019 (RTM)...                          15

Использование в условной логике для выполнения версионно-зависимого кода:

Пример sql
IF LEFT(CAST(SERVERPROPERTY('ProductVersion') AS NVARCHAR(128)), 2) >= '15'
BEGIN
    PRINT 'Это SQL Server 2019 или новее.';
    -- Код для новых версий
END;

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

Пример sql
IF SERVERPROPERTY('Edition') LIKE '%Enterprise%'
    PRINT 'Доступны функции Enterprise Edition.';

Логирование информации о сервере в таблицу аудита:

Пример sql
CREATE TABLE #ServerAudit (Info NVARCHAR(MAX), LogDate DATETIME);
INSERT INTO #ServerAudit (Info, LogDate)
VALUES (@@VERSION, GETDATE());
SELECT * FROM #ServerAudit;

MS SQL @@VERSION function comments

En
@@VERSION Returns version, processor architecture, build date, and operating system for SQL Server