2009-03-02 214 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