我将 C# 与 SMO 一起使用,并尝试检测我正在连接的 SQL Server 版本(例如,企业版、标准版)。我知道如何获取版本信息,但这只能告诉我 SQL Server 的版本(例如,SQL Server 2008 与 SQL Server 2005)。
有谁知道如何获得实际的产品版本(例如,企业版、标准版)?
我需要此信息,因为某些 SQL Server 功能仅适用于企业。因此,我可以尝试调用它们并捕获异常,但我更喜欢预先检测。
谢谢!
我将 C# 与 SMO 一起使用,并尝试检测我正在连接的 SQL Server 版本(例如,企业版、标准版)。我知道如何获取版本信息,但这只能告诉我 SQL Server 的版本(例如,SQL Server 2008 与 SQL Server 2005)。
有谁知道如何获得实际的产品版本(例如,企业版、标准版)?
我需要此信息,因为某些 SQL Server 功能仅适用于企业。因此,我可以尝试调用它们并捕获异常,但我更喜欢预先检测。
谢谢!
SELECT SERVERPROPERTY('productversion'),
SERVERPROPERTY ('productlevel'),
SERVERPROPERTY ('edition')
在我的系统返回
9.00.1399.06, RTM, Express Edition
似乎这种技术只适用于 SQL Server 2000 或更高版本,如果您的任何数据库是 7.0 或更低版本,您将不得不使用 @@Version 并按照其他人发布的那样操作结果
看起来您可以通过 SMO 和 Server 对象来做到这一点。有像 Information.Edition 这样的属性,看起来它应该做你想做的事。
我一直使用@@Version(例如 SELECT @@Version 并在代码中处理结果),但这篇文章看起来很方便; http://support.microsoft.com/kb/321185
根据链接,使用 SERVERPROPERTY 的唯一问题是……这不适用于旧版本的 SQL Server。
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)
检查注册表。这个问题有一个很好的方法,你可以从 PowerShell 脚本中调整: