我正在使用带有SMO的C#并尝试检测我正在连接的SQL Server版本(例如,企业版,标准版)。我知道如何获取版本信息,但这只能告诉我SQL Server的版本(例如,SQL Server 2008与SQL Server 2005)。

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

我需要此信息,因为某些SQL Server功能只是企业。因此,我可以尝试调用它们并捕获异常,但我更喜欢前期检测。

谢谢!

有帮助吗?

解决方案

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

其他提示

SELECT  SERVERPROPERTY('productversion'), 
        SERVERPROPERTY ('productlevel'), 
        SERVERPROPERTY ('edition')
我系统上的

返回

9.00.1399.06, RTM, Express Edition

似乎此技术仅适用于SQL Server 2000或更高版本,如果您的任何数据库为7.0或更低,您将不得不使用@@版本并操纵其他人发布的结果

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

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

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)

检查注册表。这个问题有一个很好的方法,您可以从PowerShell脚本中进行调整:

如何检查SQL使用Powershell的服务器版本?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top