我正在寻找一种方法来获得用户友好的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 ?
由于
答案 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