2009-03-02 85 views
8

我正在使用带有SMO的C#并尝试检测要连接到的SQL Server版本(例如,企业,标准)。我知道如何获取版本信息,但只知道SQL Server的哪个版本(例如,SQL Server 2008 vs SQL Server 2005)。以编程方式检测SQL Server版

有谁知道如何获得实际的产品版本(例如,企业,标准)?

我需要此信息,因为某些SQL Server功能只是企业。因此,我可以尝试打电话给他们并发现异常情况,但我更喜欢前期检测。

谢谢!

回答

6

看起来您可能可以通过SMO和服务器对象来完成它。有像Information.Edition这样的属性看起来应该做你想做的。

+0

我感谢所有,包括@@版本的答案,但我真的很期待这样的事情。 Serverobject上的Information.Edition属性是我所需要的(虽然我是哪一个它是一个枚举而不是一个字符串)。 – manu08 2009-03-02 18:26:32

4

我一直使用@@版本(例如SELECT @@版本,并在代码中嵌入结果),但这篇文章看起来非常方便; http://support.microsoft.com/kb/321185

根据链接使用SERVERPROPERTY的唯一问题是,这不适用于旧版本的SQL Server。

3
select @@version 

返回版本和哪个版本。在这里:

 
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 
    Nov 24 2008 13:01:59 
    Copyright (c) 1988-2005 Microsoft Corporation 
    Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 
21
SELECT SERVERPROPERTY('productversion'), 
     SERVERPROPERTY ('productlevel'), 
     SERVERPROPERTY ('edition') 

我的系统上返回

9.00.1399.06, RTM, Express Edition 

看来,这方法只适用的SQL Server 2000或更高版本,如果您的数据库是7.0以下,你就必须使用@@版本并操作其他人发布的结果

+0

也适用于SQL Azure的CTP – 2009-09-03 21:30:27

相关问题