SqlDataSourceEnumerator.Instance.GetDataSources() does not locate local SQL server 2008 instance

后端 未结 4 2033
别那么骄傲
别那么骄傲 2020-11-27 21:17

I use the following code to list all the remote and local SQL Server instances:

public static void LocateSqlInstances()
  {
     using( DataTable sqlSources          


        
4条回答
  •  遥遥无期
    2020-11-27 21:50

    var registryViewArray = new[] { RegistryView.Registry32, RegistryView.Registry64 };
    
    foreach (var registryView in registryViewArray)
    {
        using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, registryView))
        using (var key = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server"))
        {
            var instances = (string[]) key?.GetValue("InstalledInstances");
            if (instances != null)
            {
                foreach (var element in instances)
                {
                    if (element == "MSSQLSERVER")
                        Console.WriteLine(System.Environment.MachineName);
                    else
                        Console.WriteLine(System.Environment.MachineName + @"\" + element);
    
                }
            }
        }
    }
    
    Console.ReadKey();
    

提交回复
热议问题