获取用户友好的SQL Server产品名称

时间:2013-09-24 08:12:15

标签: sql sql-server

我正在寻找一种方法来获得用户友好的MSSQL产品名称。

我试过了:

select @@version

但它返回了很多信息(我现在不想解析它)

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: )

另一次尝试是

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

返回10.50.1617.0 RTM Developer Edition (64-bit)

我尝试从此list获取每个属性的SERVERPROPERTY,但找不到所需的属性。

有没有办法只获得字符串 Microsoft SQL Server 2008 R2

由于

3 个答案:

答案 0 :(得分:5)

怎么样

SELECT LEFT(@@version, CHARINDEX(' - ', @@version)) ProductName;

注意:显然你可以根据自己的需要进行调整(如需要修剪RTM等)。

示例输出SQL Server 2008:

|                         PRODUCTNAME |
|-------------------------------------|
| Microsoft SQL Server 2008 R2 (RTM)  |

这是 SQLFiddle 演示

示例输出SQL Server 2012:

|                PRODUCTNAME |
|----------------------------|
| Microsoft SQL Server 2012  |

这是 SQLFiddle 演示

答案 1 :(得分:2)

尝试此操作(如果您需要删除(RTM)):

 select 
     case when charindex('-', @@version,0) < charindex('(', @@version,0)
          then left(@@version, charindex('-', @@version,0)-1)
     else left(@@version, charindex('(', @@version,0)-1) end as myserver

 --Results 
 Microsoft SQL Server 2008 R2
 Microsoft SQL Server 2012

其他

 select left(@@version, charindex('-', @@version,0)-1) as myserver

 --Results 
 Microsoft SQL Server 2008 R2 (RTM)
 Microsoft SQL Server 2012

<强> Fiddle demo

答案 2 :(得分:0)

好的,那么接下来呢......这不是一个完全完整的答案,但是我把它作为人们玩具的东西。

显然不是一个详尽的清单所以不是未来的证明,但给你一些合作的东西。我已经在代码本身中包含了许多引用:

SELECT 'Microsoft SQL Server '
     + CASE ParseName(Cast(ServerProperty('ProductVersion') As varchar(100)), 4)
         /* This function did not exist in versions prior to 2005
         WHEN  6 THEN '6' -- there is a v6.5 but we'll let that return "6 R2"
         WHEN  7 THEN '7.0'
         WHEN  8 THEN '2000'
         */
         -- How to determine the version and edition of SQL Server: http://support.microsoft.com/kb/321185
         WHEN  3 THEN 'Mobile/Compact Edition'
         WHEN  9 THEN '2005'
         WHEN 10 THEN '2008'
         WHEN 11 THEN '2012'
         WHEN 12 THEN '2014' -- http://social.msdn.microsoft.com/Forums/en-US/199f43df-243e-4473-a765-e0e45c0ca3d5/sql-server-2014-release-date-and-version-number
         ELSE '(unknown)'
       END
     + CASE ParseName(Cast(ServerProperty('ProductVersion') As varchar(100)), 3)
         WHEN 50 THEN ' R2'    -- 
         WHEN 25 THEN ' Azure' -- http://msdn.microsoft.com/en-us/library/ff951630.aspx
         WHEN  5 THEN ' 3.5'   -- CE https://blogs.msdn.com/b/sqlservercompact/archive/2008/02/08/sql-server-compact-release-versions.aspx
         ELSE ''
       END As sql_version