2

我正在寻找一种获取用户友好的 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)

我试图从这个列表SERVERPROPERTY中获取每个属性,但找不到需要的。

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

谢谢

4

3 回答 3

6

怎么样

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

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

示例输出 SQL Server 2008:

| 产品名称 |
|--------------------------------------|
| Microsoft SQL Server 2008 R2 (RTM) |

这是SQLFiddle演示

示例输出 SQL Server 2012:

| 产品名称 |
|-----------------------------|
| 微软 SQL Server 2012 |

这是SQLFiddle演示

于 2013-09-24T08:18:51.613 回答
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

小提琴演示

于 2013-09-24T08:21:50.360 回答
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
于 2013-09-24T09:28:05.200 回答