Я знаю , что это старая почта , но я обновил код , найденный в ссылке (который умер от 2013-12-03) , упомянутых в ответе разместил Matt Rogish :
DECLARE@ver nvarchar(128)SET@ver = CAST(serverproperty('ProductVersion')AS nvarchar)SET@ver = SUBSTRING(@ver,1, CHARINDEX('.',@ver)-1)IF(@ver ='7')SELECT'SQL Server 7'ELSEIF(@ver ='8')SELECT'SQL Server 2000'ELSEIF(@ver ='9')SELECT'SQL Server 2005'ELSEIF(@ver ='10')SELECT'SQL Server 2008/2008 R2'ELSEIF(@ver ='11')SELECT'SQL Server 2012'ELSEIF(@ver ='12')SELECT'SQL Server 2014'ELSEIF(@ver ='13')SELECT'SQL Server 2016'ELSEIF(@ver ='14')SELECT'SQL Server 2017'ELSESELECT'Unsupported SQL Server Version'
Мне это нравится, красивый, простой и многоразовый для разных серверных версий. Я использовал немного измененную версию выше: select cast(serverproperty('productversion') as varchar) as [result]. Я хочу сказать, что я могу выполнить вышеуказанное через ADO.NET, ExecuteScalarа затем проанализировать полученную строку как System.Versionобъект. Кроме того, преобразование его в числовое значение дает разные значения номерам версий, когда дело доходит до конечных нулей и счетчика цифр сегмента версии, в то время как строка может быть преобразована в действительный Versionобъект без потери согласованности каждого компонента версии.
Ивайло Славов
4
CREATEFUNCTION dbo.UFN_GET_SQL_SEVER_VERSION
()
RETURNS sysname
ASBEGINDECLARE@ServerVersion sysname,@ProductVersion sysname,@ProductLevel sysname,@Edition sysname;SELECT@ProductVersion =CONVERT(sysname, SERVERPROPERTY('ProductVersion')),@ProductLevel =CONVERT(sysname, SERVERPROPERTY('ProductLevel')),@Edition =CONVERT(sysname, SERVERPROPERTY ('Edition'));--see: http://support2.microsoft.com/kb/321185SELECT@ServerVersion =CASEWHEN@ProductVersion LIKE'8.00.%'THEN'Microsoft SQL Server 2000'WHEN@ProductVersion LIKE'9.00.%'THEN'Microsoft SQL Server 2005'WHEN@ProductVersion LIKE'10.00.%'THEN'Microsoft SQL Server 2008'WHEN@ProductVersion LIKE'10.50.%'THEN'Microsoft SQL Server 2008 R2'WHEN@ProductVersion LIKE'11.0%'THEN'Microsoft SQL Server 2012'WHEN@ProductVersion LIKE'12.0%'THEN'Microsoft SQL Server 2014'ENDRETURN@ServerVersion + N' ('+@ProductLevel + N'), '+@Edition +' - '+@ProductVersion;END
GO
Только что обнаружил, что это не работает sql 2008, потому что «10» меньше «9». Вы можете изменить значение в обновленном ответе, чтобы использовать 8, 9, 10 или все, что вам нужно для тестирования, в качестве минимального значения
Брюс Чепмен,
3
Существует еще одна расширенная хранимая процедура, которую можно использовать для просмотра информации о версии:
Статья базы знаний, ссылка на которую есть в сообщении Джо, отлично подходит для определения того, какие пакеты обновления были установлены для любой версии. Аналогичным образом в этой статье базы знаний номера версий сопоставляются с конкретными исправлениями и накопительными обновлениями, но это применимо только к SQL05 SP2 и выше.
Ответы:
Пытаться
или для SQL Server 2000 и выше следующее легче разобрать :)
С: http://support.microsoft.com/kb/321185
источник
ВЫБРАТЬ @@ ВЕРСИЯ
источник
Я знаю , что это старая почта , но я обновил код , найденный в ссылке (который умер от 2013-12-03) , упомянутых в ответе разместил Matt Rogish :
источник
Для SQL Server 2000 и выше я предпочитаю следующий анализ ответа Джо:
Дает следующие результаты:
Основной список номеров версий здесь , или исчерпывающий список от Microsoft здесь .
источник
select cast(serverproperty('productversion') as varchar) as [result]
. Я хочу сказать, что я могу выполнить вышеуказанное через ADO.NET,ExecuteScalar
а затем проанализировать полученную строку какSystem.Version
объект. Кроме того, преобразование его в числовое значение дает разные значения номерам версий, когда дело доходит до конечных нулей и счетчика цифр сегмента версии, в то время как строка может быть преобразована в действительныйVersion
объект без потери согласованности каждого компонента версии.источник
Вот небольшой сценарий, который я использую для тестирования, если сервер 2005 или новее.
Примечание: обновлено из исходного ответа (см. Комментарий)
источник
Существует еще одна расширенная хранимая процедура, которую можно использовать для просмотра информации о версии:
источник
Статья базы знаний, ссылка на которую есть в сообщении Джо, отлично подходит для определения того, какие пакеты обновления были установлены для любой версии. Аналогичным образом в этой статье базы знаний номера версий сопоставляются с конкретными исправлениями и накопительными обновлениями, но это применимо только к SQL05 SP2 и выше.
источник
Попробуй это:
источник
источник
Получение только основной версии SQL Server за один выбор:
Возвраты
8
для SQL 2000,9
SQL 2005 и т. Д. (Проверено до 2012 г.).источник
Пытаться
Для получения дополнительной информации см .: Запрос информации о версии / выпуске
источник
источник
Если вам нужна только основная версия по причинам T-SQL, ниже указан год версии SQL Server для 2000 или более поздней версии.
SELECT left(ltrim(replace(@@Version,'Microsoft SQL Server','')),4)
Этот код корректно обрабатывает лишние пробелы и вкладки для различных версий SQL Server.
источник
Попробуй это:
источник
Попробуй это:
источник