如何在与SQL Server Express一起使用的Windows服务中定义对SQL Server的依赖性

jas*_*cao 7 .net c# windows-services

我正在使用以下代码来定义SQL Server上的服务依赖项:

serviceInstaller.StartType = ServiceStartMode.Automatic;
serviceInstaller.ServicesDependedOn = new[] { "MSSQLSERVER" }; 
Installers.Add(serviceInstaller);
Installers.Add(processInstaller);
Run Code Online (Sandbox Code Playgroud)

这适用于两台计算机,一台使用SQL Server,另一台使用SQL Server Express.但是当我在客户端服务器中安装该服务时,它失败了,因为SQL Server Express服务名称不同(SQLSERVEREXPRESS).有没有办法定义在两种情况下都有效的依赖?谢谢.

Rem*_*anu 13

您需要使用正确的服务名称.SQL服务名称是MSSQLSERVER默认情况下,对于SQLSERVEREXPRESS(某些)Express实例和MSSQL$<instancename>命名实例.由于名称基本上是动态的,因此最好的选择是枚举SQL Server服务并选择正确的名称,或者如果存在多个选项则提示用户.

不幸的是,我不知道有任何枚举已安装的SQL Server实例的API.甚至MS支持度假村来查询注册表:

问:如何确定计算机上安装了多少个SQL Server实例?

答:可以从InstalledInstances值中找到计算机上所有SQL Server实例的名称,该值位于以下注册表项下: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server