Есть ли системная хранимая процедура для получения версии #?
Как вы проверяете, какую версию SQL Server для базы данных использует TSQL?
Ответ 1
Попробуйте
SELECT @@VERSION
или для SQL Server 2000 и выше следующее проще разобрать:)
SELECT SERVERPROPERTY('productversion')
, SERVERPROPERTY('productlevel')
, SERVERPROPERTY('edition')
Ответ 2
SELECT @@VERSION
Ответ 3
Я знаю, что это более старая должность, но я обновил код, найденный в ссылка (которая мертва с 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'
Ответ 4
Для 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 .
Ответ 5
Существует еще одна расширенная хранимая процедура, которая может использоваться для просмотра информации о версии:
exec [master].sys.[xp_msver]
Ответ 6
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
Ответ 7
Здесь немного 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
Примечание: обновлено от исходного ответа (см. комментарий)
Ответ 8
Статья в формате KB, связанная в Joe post, отлично подходит для определения того, какие пакеты обновлений были установлены для любой версии. В этих же строках эта статья KB сопоставляет номера версий конкретным исправлениям и кумулятивным обновлениям, но она применима только к SQL05 SP2 и выше.
Ответ 9
Попробуйте следующее:
if (SELECT LEFT(CAST(SERVERPROPERTY('productversion') as varchar), 2)) = '10'
BEGIN
Ответ 10
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
Ответ 11
Получение только основной версии 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 года).
Ответ 12
Если все, что вы хотите, является основной версией для причин T-SQL, следующее дает вам год версии SQL Server 2000 или новее.
SELECT left(ltrim(replace(@@Version,'Microsoft SQL Server','')),4)
Этот код изящно обрабатывает дополнительные пробелы и вкладки для различных версий SQL Server.
Ответ 13
Попробуйте следующее:
SELECT @@VERSION[server], SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
Ответ 14
Try
SELECT @@MICROSOFTVERSION / 0x01000000 AS MajorVersionNumber
Подробнее см.: Запрос информации о версии/выпуске
Ответ 15
выберите 'sqlserver is' + substring (@@VERSION, 21,5) 'sql version'