Ответ 1
Попробуйте
SELECT @@VERSION
или для SQL Server 2000 и выше следующее проще разобрать:)
SELECT SERVERPROPERTY('productversion')
, SERVERPROPERTY('productlevel')
, SERVERPROPERTY('edition')
Есть ли системная хранимая процедура для получения версии #?
Попробуйте
SELECT @@VERSION
или для SQL Server 2000 и выше следующее проще разобрать:)
SELECT SERVERPROPERTY('productversion')
, SERVERPROPERTY('productlevel')
, SERVERPROPERTY('edition')
SELECT @@VERSION
Я знаю, что это более старая должность, но я обновил код, найденный в ссылка (которая мертва с 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'
ELSE IF ( @ver = '8' )
SELECT 'SQL Server 2000'
ELSE IF ( @ver = '9' )
SELECT 'SQL Server 2005'
ELSE IF ( @ver = '10' )
SELECT 'SQL Server 2008/2008 R2'
ELSE IF ( @ver = '11' )
SELECT 'SQL Server 2012'
ELSE IF ( @ver = '12' )
SELECT 'SQL Server 2014'
ELSE IF ( @ver = '13' )
SELECT 'SQL Server 2016'
ELSE
SELECT 'Unsupported SQL Server Version'
Для SQL Server 2000 и выше я предпочитаю следующий синтаксический анализ ответа Джо:
declare @sqlVers numeric(4,2)
select @sqlVers = left(cast(serverproperty('productversion') as varchar), 4)
Дает следующие результаты:
Result Server Version 8.00 SQL 2000 9.00 SQL 2005 10.00 SQL 2008 10.50 SQL 2008R2 11.00 SQL 2012 12.00 SQL 2014
Основной список номеров версий здесь или исчерпывающий список из Microsoft .
Существует еще одна расширенная хранимая процедура, которая может использоваться для просмотра информации о версии:
exec [master].sys.[xp_msver]
CREATE FUNCTION dbo.UFN_GET_SQL_SEVER_VERSION
(
)
RETURNS sysname
AS
BEGIN
DECLARE @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/321185
SELECT @ServerVersion =
CASE
WHEN @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'
END
RETURN @ServerVersion + N' ('[email protected] + N'), ' + @Edition + ' - ' + @ProductVersion;
END
GO
Здесь немного script я использую для тестирования, если сервер 2005 или более поздний
declare @isSqlServer2005 bit
select @isSqlServer2005 = case when CONVERT(int, SUBSTRING(CONVERT(varchar(15), SERVERPROPERTY('productversion')), 0, CHARINDEX('.', CONVERT(varchar(15), SERVERPROPERTY('productversion'))))) < 9 then 0 else 1 end
select @isSqlServer2005
Примечание: обновлено от исходного ответа (см. комментарий)
Статья в формате KB, связанная в Joe post, отлично подходит для определения того, какие пакеты обновлений были установлены для любой версии. В этих же строках эта статья KB сопоставляет номера версий конкретным исправлениям и кумулятивным обновлениям, но она применима только к SQL05 SP2 и выше.
Попробуйте следующее:
if (SELECT LEFT(CAST(SERVERPROPERTY('productversion') as varchar), 2)) = '10'
BEGIN
SELECT
@@SERVERNAME AS ServerName,
CASE WHEN LEFT(CAST(serverproperty('productversion') as char), 1) = 9 THEN '2005'
WHEN LEFT(CAST(serverproperty('productversion') as char), 2) = 10 THEN '2008'
WHEN LEFT(CAST(serverproperty('productversion') as char), 2) = 11 THEN '2012'
END AS MajorVersion,
SERVERPROPERTY ('productlevel') AS MinorVersion,
SERVERPROPERTY('productversion') AS FullVersion,
SERVERPROPERTY ('edition') AS Edition
Получение только основной версии SQL Server в одном элементе:
SELECT SUBSTRING(ver, 1, CHARINDEX('.', ver) - 1)
FROM (SELECT CAST(serverproperty('ProductVersion') AS nvarchar) ver) as t
Возвращает 8
для SQL 2000, 9
для SQL 2005 и т.д. (проверено до 2012 года).
Если все, что вы хотите, является основной версией для причин T-SQL, следующее дает вам год версии SQL Server 2000 или новее.
SELECT left(ltrim(replace(@@Version,'Microsoft SQL Server','')),4)
Этот код изящно обрабатывает дополнительные пробелы и вкладки для различных версий SQL Server.
Попробуйте следующее:
SELECT @@VERSION[server], SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
Try
SELECT @@MICROSOFTVERSION / 0x01000000 AS MajorVersionNumber
Подробнее см.: Запрос информации о версии/выпуске
выберите 'sqlserver is' + substring (@@VERSION, 21,5) 'sql version'