示例#1
0
 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;
             }
         }
     }
 }
示例#2
0
        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));
            }
        }