2008-09-12 71 views

回答

215

嘗試

SELECT @@VERSION 

或爲SQL Server 2000及以上如下更易於解析:)

SELECT SERVERPROPERTY('productversion') 
    , SERVERPROPERTY('productlevel') 
    , SERVERPROPERTY('edition') 

來源:http://support.microsoft.com/kb/321185

+1

第二個適用於我,我添加檢查維基百科,以瞭解8.00.xx意味着SQL服務器2000 – pdem 2015-04-28 07:52:24

1

的與Joe's post鏈接的KB文章非常適合確定wh已爲任何版本安裝了服務包。沿着同樣的路線,this KB article將版本號映射到特定的修補程序和累積更新,但它僅適用於SQL05 SP2及更高版本。

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 

注:從原來的答案更新(見註釋)

+0

剛剛發現這不工作SQL 2008,因爲'10'小於'9'。 您可以更改更新後的答案中的值,以使用8,9,10或任何您需要測試的值作爲最小值。 – 2011-06-29 07:01:57

1

試試這個:

if (SELECT LEFT(CAST(SERVERPROPERTY('productversion') as varchar), 2)) = '10' 
BEGIN 
12

對於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 

版本號here,或者從微軟here詳盡的列表的基本列表。在answer提到

+0

我喜歡這一點,很好,簡單並且可以跨服務器版本重新使用。我使用了上面稍微修改後的版本:`select cast(serverproperty('productversion')as varchar)as [result]`。我的意思是,我可以通過ADO.NET的`ExecuteScalar`執行上述操作,然後將結果字符串解析爲`System.Version`對象。另外,將它轉換爲數字時,對於尾隨零和版本段數字計數,版本號具有不同的含義,而字符串可以解析爲有效的「版本」對象,而不會損失每個版本組件的一致性。 – 2015-04-24 08:05:49

23

我知道這是一個老的文章,但我更新了link發現(這是死定的2013年12月3日)的代碼張貼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' 
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 
1

在單隻得到了重大的SQL Server版本選擇:

SELECT SUBSTRING(ver, 1, CHARINDEX('.', ver) - 1) 
FROM (SELECT CAST(serverproperty('ProductVersion') AS nvarchar) ver) as t 

返回8爲SQL 2000,9 2005 SQL等等(測試到2012年)。

3

還有一個擴展存儲的過程可用於以查看版本信息:

exec [master].sys.[xp_msver] 
3
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 
-1

選擇 '的SQLServer是' +子(@@ VERSION,21,5)「的SQL版本'

0

如果所有你想要的是T-SQL原因的主要版本,下面給出SQL Server 2000或更高版本的年份。

SELECT left(ltrim(replace(@@Version,'Microsoft SQL Server','')),4)

此代碼優雅地處理多餘的空格和選項卡的SQL Server的各種版本。

0

試試這個:

SELECT @@VERSION[server], SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition') 
相關問題