如何检查安装的实例是完整版SQL Server还是SQL Server Express

4
在我的一个项目中,首先需要检查机器上是否安装了SQL Server。我使用下面的代码来完成这个任务:
 var sqlRegistry = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Microsoft SQL Server", true);

 if (sqlRegistry == null) 
 { }
 else 
 { }

但是在else部分,我需要知道安装的SQL Server是“仅限于”SQL Server Express还是完整版的SQL Server。

我该怎么做?


可能是如何确定计算机上运行的SQL Server版本?的重复问题。 - MeanGreen
4个回答

3

SQL-Server似乎有一个内置函数SERVERPROPERTY,所以您可以通过SQL查询服务器,例如:

SELECT SERVERPROPERTY('EngineEdition')


如果 MS SQL Server 停止了怎么办? - teo van kot
那是讽刺吗?=)我真的有这样一个问题,如果它现在停止了但仍然安装着。 - teo van kot
1
也许这里有些线索:https://dev59.com/k3VC5IYBdhLWcg3w7V73 - JimmyB

3

您可以在注册表键中查看已安装的实例:

Software\Microsoft\Microsoft SQL Server\InstalledInstances

这将包含所有已安装的实例,例如在我的系统上:
MSSQLSERVER
SQLEXPRESS

进入此注册表键并更改此值:

Software\Microsoft\Microsoft SQL Server\Instance Names\SQL

为了在下一步中获取您需要的实际实例名称。

现在,如果您查看注册表键:

Software\Microsoft\Microsoft SQL Server\(InstanceName)\Setup\Edition

这里有一个值,例如Express用于SQL Server Express,或者Developer Edition或其他的值。这将告诉您是否拥有Express或其他“完整”版本的SQL Server。


1
非常感谢您提供如此深入的答案。 - teo van kot

2
这是一些代码,根据@marc_s的回答,在服务器上安装MS SQL Server Editions到控制台。
//This line open Registry with x64 View from x86 process. Usually SQL server installed in x64 edition, otherwise you should check x86
var localMachine = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
var msSQLServer = localMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server");
var instances = (string[])msSQLServer.GetValue("InstalledInstances");

foreach (var instance in instances)
{
    var insNames = localMachine.OpenSubKey(@"Software\Microsoft\Microsoft SQL Server\Instance Names\SQL");
    var realNameInstanse = (string)insNames.GetValue(instance);
    var sqlEditionRegistry = localMachine.OpenSubKey(string.Format(@"Software\Microsoft\Microsoft SQL Server\{0}\Setup", realNameInstanse));
    var edition = (string)sqlEditionRegistry.GetValue("Edition");
    Console.WriteLine("Instance {0}, RealName {2}, - Edition: {1}", instance, edition, realNameInstanse);
}

这是基于文章末尾的列表的版本列表:
  • 标准版

  • 64位版

  • Express版

  • 开发人员版

  • 企业版

  • 工作组版

  • 标准版

  • 分析服务

  • 开发人员版

  • 企业版

  • 企业评估版

  • Express版

  • 带高级服务的Express版

  • 集成服务

  • 数据中心版

  • 报告服务

  • 小型企业标准版

  • Web版

  • 工作组版

  • 商业智能版

  • 企业核心版


0

要检查 SQL Server 版本,您可以查询 @@version

execute select @@version

输出包括:

  1. SQL服务器版本
  2. SQL服务器版本
  3. 最新安装的补丁
  4. 计算机处理器(32位或64位)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接