private void bgPopulateInstanceDropdownComplete(object sender, RunWorkerCompletedEventArgs e) { if (cbInstances.SelectedIndex > -1) { svcName = "SSASDiag_" + (cbInstances.SelectedIndex == 0 ? "MSSQLSERVER" : cbInstances.Text); } cbInstances.DataSource = LocalInstances; cbInstances.DisplayMember = "Text"; cbInstances.Refresh(); if (LocalInstances.Count == 0) { lblInstanceDetails.Text = "There were no Analysis Services instances found on this server.\r\nPlease run on a server with a SQL 2008 or later SSAS instance."; } else { if (Args.ContainsKey("instance")) { int i = LocalInstances.FindIndex(c => c.Text.ToLower() == Args["instance"].ToLower().TrimEnd().TrimStart()); if (i > 0) { cbInstances.SelectedIndex = i; } } } }
private void bgPopulateInstanceDropdown(object sender, DoWorkEventArgs e) { try { ServiceController[] services = ServiceController.GetServices(); foreach (ServiceController s in services.OrderBy(ob => ob.DisplayName)) { if (s.DisplayName.Contains("Analysis Services") && !s.DisplayName.Contains("SQL Server Analysis Services CEIP (")) { SelectQuery sQuery = new SelectQuery("select name, startname, pathname from Win32_Service where name = \"" + s.ServiceName + "\""); ManagementObjectSearcher mgmtSearcher = new ManagementObjectSearcher(sQuery); string sSvcUser = ""; foreach (ManagementObject svc in mgmtSearcher.Get()) { sSvcUser = svc["startname"] as string; } if (sSvcUser.Contains(".")) { sSvcUser = sSvcUser.Replace(".", Environment.UserDomainName); } if (sSvcUser == "LocalSystem") { sSvcUser = "******"; } string ConfigPath = Registry.LocalMachine.OpenSubKey("SYSTEM\\ControlSet001\\Services\\" + s.ServiceName, false).GetValue("ImagePath") as string; System.Diagnostics.Trace.WriteLine("Found AS instance: " + ConfigPath); ConfigPath = ConfigPath.Substring(ConfigPath.IndexOf("-s \"") + "-s \"".Length).TrimEnd('\"'); string InstanceID = s.DisplayName.Replace("SQL Server Analysis Services (", "").Replace(")", ""); InstanceID = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\OLAP", false).GetValue(InstanceID) as string; string SQLProgramDir = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\" + InstanceID + @"\Setup", false).GetValue("SQLProgramDir") as string; if (s.DisplayName.Replace("SQL Server Analysis Services (", "").Replace(")", "").ToUpper() == "MSSQLSERVER") { LocalInstances.Insert(0, new ComboBoxServiceDetailsItem() { Text = "Default instance (MSSQLServer)", ConfigPath = ConfigPath, ServiceAccount = sSvcUser, InstanceID = InstanceID, SQLProgramDir = SQLProgramDir, ServiceName = s.ServiceName }); } else { LocalInstances.Add(new ComboBoxServiceDetailsItem() { Text = s.DisplayName.Replace("SQL Server Analysis Services (", "").Replace(")", ""), ConfigPath = ConfigPath, ServiceAccount = sSvcUser, InstanceID = InstanceID, SQLProgramDir = SQLProgramDir, ServiceName = s.ServiceName }); } } } } catch (Exception ex) { System.Diagnostics.Trace.WriteLine("Failure during instance enumeration - could be because no instances were there. Move on quietly then."); System.Diagnostics.Trace.WriteLine(ex); } if (LocalInstances.Count == 0) { cbInstances.Invoke(new System.Action(() => cbInstances.Enabled = false)); } }