是否有系统存储过程来获取版本#?
答案 0 :(得分:228)
尝试
SELECT @@VERSION
或者对于SQL Server 2000及更高版本,以下内容更容易解析:)
SELECT SERVERPROPERTY('productversion')
, SERVERPROPERTY('productlevel')
, SERVERPROPERTY('edition')
答案 1 :(得分:29)
SELECT @@ VERSION
答案 2 :(得分:25)
我知道这是一篇较旧的帖子,但我更新了link发布的answer Matt Rogish中提到的{{3}}(截至2013-12-03时已失效)中的代码:
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 IF ( @ver = '14' )
SELECT 'SQL Server 2017'
ELSE
SELECT 'Unsupported SQL Server Version'
答案 3 :(得分:14)
对于SQL Server 2000及更高版本,我更喜欢以下解析Joe的答案:
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
答案 4 :(得分:4)
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' ('+@ProductLevel + N'), ' + @Edition + ' - ' + @ProductVersion;
END
GO
答案 5 :(得分:3)
还有另一个扩展的存储过程可用于查看版本信息:
exec [master].sys.[xp_msver]
答案 6 :(得分:2)
这是我用于测试服务器是否为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
注意:从原始答案更新(请参阅评论)
答案 7 :(得分:1)
Joe's post中链接的知识库文章非常适合确定已为任何版本安装了哪些Service Pack。在这些相同的行中,this KB article将版本号映射到特定的修补程序和累积更新,但它仅适用于SQL05 SP2及更高版本。
答案 8 :(得分:1)
试试这个:
if (SELECT LEFT(CAST(SERVERPROPERTY('productversion') as varchar), 2)) = '10'
BEGIN
答案 9 :(得分:1)
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
答案 10 :(得分:1)
只在一个选择中获取主要的SQL Server版本:
SELECT SUBSTRING(ver, 1, CHARINDEX('.', ver) - 1)
FROM (SELECT CAST(serverproperty('ProductVersion') AS nvarchar) ver) as t
为SQL 2000返回8
,为SQL 2005返回9
,依此类推(直到2012年测试)。
答案 11 :(得分:1)
尝试
SELECT @@MICROSOFTVERSION / 0x01000000 AS MajorVersionNumber
有关详细信息,请参阅:Querying for version/edition info
答案 12 :(得分:1)
select substring(@@version,0,charindex(convert(varchar,SERVERPROPERTY('productversion')) ,@@version)+len(convert(varchar,SERVERPROPERTY('productversion'))))
答案 13 :(得分:0)
如果你想要的只是T-SQL原因的主要版本,下面给出了2000年或更晚的SQL Server版本的年份。
SELECT left(ltrim(replace(@@Version,'Microsoft SQL Server','')),4)
此代码可以优雅地处理各种版本的SQL Server的额外空格和制表符。
答案 14 :(得分:0)
试试这个:
SELECT @@VERSION[server], SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
答案 15 :(得分:-1)
试试这个:
SELECT
'the sqlserver is ' + substring(@@VERSION, 21, 5) AS [sql version]