Vous avez plusieurs façons de le faire:
- SmoApplication.EnumAvailableSqlServers()
- SqlDataSourceEnumerator.Instance
- accès direct au système reg istry
L'accès direct n'est pas la solution recommandée par MS, car ils peuvent modifier les clés/chemins. Mais les autres solutions ne sont pas robustes et échouent en fournissant des instances sur des plates-formes 64 bits.
Par conséquent, je préfère vérifier les instances SQL Server dans le registre système. En faisant cela, gardez à l'esprit la différence dans l'accès au Registre entre x86 et x64 plates-formes. Windows 64 bits stocke des données dans différentes parties du registre système et les combine en vues. Donc, en utilisant RegistryView est essentiel.
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 vous recherchez des instances 32 bits sur un système d'exploitation 64 bits (assez bizarre, mais possible), vous aurez besoin de regarder:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server
Même question: http: // stackoverflow .com/questions/2381055/check-if-sql-serveur-any-version-is-installed –
oh désolé. Merci ! – Shrayas