8

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

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

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

谢谢!

4

5 回答 5

21
SELECT  SERVERPROPERTY('productversion'), 
        SERVERPROPERTY ('productlevel'), 
        SERVERPROPERTY ('edition')

在我的系统返回

9.00.1399.06, RTM, Express Edition

似乎这种技术只适用于 SQL Server 2000 或更高版本,如果您的任何数据库是 7.0 或更低版本,您将不得不使用 @@Version 并按照其他人发布的那样操作结果

于 2009-03-02T15:19:28.953 回答
6

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

于 2009-03-02T15:22:11.363 回答
4

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

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

于 2009-03-02T15:15:11.413 回答
3
select @@version

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

Microsoft SQL Server 2005 - 9.00.4035.00(英特尔 X86)
    2008 年 11 月 24 日 13:01:59
    版权所有 (c) 1988-2005 Microsoft Corporation
    Windows NT 5.2 上的开发人员版(内部版本 3790:Service Pack 2)
于 2009-03-02T15:15:26.077 回答
0

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

如何使用 Powershell 检查 SQL Server 版本?

于 2016-10-21T11:38:15.277 回答