Tienes varias formas de hacerlo:
- SmoApplication.EnumAvailableSqlServers()
- SqlDataSourceEnumerator.Instance
- Acceso directo a reg terio
Acceso directo no es la solución recomendada por la EM, ya que pueden cambiar las llaves/caminos. Pero las otras soluciones no son sólidas y no proporciona instancias en plataformas de 64 bits.
Por lo tanto, prefiero comprobar las instancias de SQL Server en el Registro del sistema. Al hacerlo, tenga en cuenta la diferencia en el acceso de Registro entre las plataformas x86 y x64. Windows de 64 bits almacena datos en diferentes partes del registro del sistema y los combina en vistas. Entonces, usar RegistryView es esencial.
using Microsoft.Win32;
RegistryView registryView = Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32;
using (RegistryKey hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, registryView))
{
RegistryKey instanceKey = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL", false);
if (instanceKey != null)
{
foreach (var instanceName in instanceKey.GetValueNames())
{
Console.WriteLine(Environment.MachineName + @"\" + instanceName);
}
}
}
Si está buscando instancias de 32 bits en un sistema operativo de 64 bits (bastante raro, pero posible), que tendrá que buscar:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server
misma pregunta: http: // stackoverflow .com/questions/2381055/check-if-sql-server-any-version-is-installed –
lo siento. Gracias ! – Shrayas