private async void OnButtonAssemblyUninstall_Click(object sender, EventArgs e)
        {
            try
            {
                var helper = (AsqaHelperControl)this.Parent.Parent.Parent.Parent;
                helper.WaitStart();
                try
                {
                    SetASQAAssemblyControlsDisabled();

                    using (var client = new SSASQueryAnalyzerClient(GetCurrentSSASInstanceConnectionString()))
                        await client.UninstallAsync();

                    _ssasInstanceConnected = true;
                    _assemblyInstalled     = false;

                    EnableASQAAssemblyControls();
                }
                finally
                {
                    helper.WaitStop();
                }
            }
            catch (Exception ex)
            {
                ex.HandleException(display: true);
            }
        }
        public async Task RestoreDefaultConfigurationAsync()
        {
            if (_ssasInstanceConnected && _assemblyInstalled)
            {
                var helper = (AsqaHelperControl)this.Parent.Parent.Parent.Parent;
                helper.WaitStart();
                try
                {
                    var xconfig = new XDocument(new XElement(ProcedureConfiguration.XConfigRoot))
                                  .ToString(SaveOptions.DisableFormatting);

                    using (var client = new SSASQueryAnalyzerClient(GetCurrentSSASInstanceConnectionString()))
                    {
                        await client.ReconfigureAsync(xconfig);

                        LoadEngineConfiguration(await client.GetConfigurationForEngineAsync());
                        LoadTraceEventsConfiguration(await client.GetConfigurationForTraceEventsAsync());
                        LoadPerformanceCountersConfiguration(await client.GetConfigurationForPerformanceCountersAsync());
                    }
                }
                finally
                {
                    helper.WaitStop();
                }
            }
        }
Esempio n. 3
0
        public static async void ExecuteBatchAnalysisAsync()
        {
            if (_dte.ActiveDocument.ActiveWindow == null)
            {
                return;
            }

            var scriptEditorControl = GetCurrentAnalysisWindowEditorControl();

            if (scriptEditorControl == null)
            {
                return;
            }

            var dialogSelected = ShowDialogForSelectConnection();

            if (dialogSelected == null)
            {
                return;
            }

            var analysisServerResultsControl = RestoreAnalysisServerResultsControl(scriptEditorControl, showOriginalControls: false);

            try
            {
                var document  = (TextDocument)_dte.ActiveDocument.Object("TextDocument");
                var statement = (document.Selection.Text.Length > 0 ? document.Selection.Text : document.StartPoint.CreateEditPoint().GetText(document.EndPoint)).Trim();
                if (statement.Length == 0)
                {
                    return;
                }

                LogoPanel.SetMode(scriptEditorControl, LogoPanel.PanelMode.Batch);

                var server   = scriptEditorControl.Connection.ServerName;
                var database = scriptEditorControl.Connection.AdvancedOptions.Get("DATABASE");

                using (var client = new SSASQueryAnalyzerClient(server, database))
                {
                    client.ExecutionProgressControlEnabled       = true;
                    client.ExecutionProgressControl.TitleMessage = "Batch";

                    analysisServerResultsControl.ResizeFor(client.ExecutionProgressControl);
                    analysisServerResultsControl.Controls.Add(client.ExecutionProgressControl);

                    var analyzerStatistics = await client.AnalyzeBatchAsync(dialogSelected.Item1, statement, batchName : dialogSelected.Item2);

                    var control = client.BuildBatchResultControl(analyzerStatistics);
                    analysisServerResultsControl.ResizeFor(control);
                    analysisServerResultsControl.Controls.Add(control);
                }
            }
            catch (Exception ex)
            {
                analysisServerResultsControl.Controls.Add(CustomErrorControl.CreateFromException(ex));
            }
        }
Esempio n. 4
0
        public static async void ExecuteLoadFromBatchAnalysisAsync(string connectionStringBatch, string batchID, string statement, Action onExecuted = null)
        {
            NewAnalysisWindow();

            var scriptEditorControl = GetCurrentAnalysisWindowEditorControl();

            if (scriptEditorControl == null || scriptEditorControl.Connection == null)
            {
                return;
            }

            var analysisServerResultsControl = RestoreAnalysisServerResultsControl(scriptEditorControl, showOriginalControls: false);

            try
            {
                var document = (TextDocument)_dte.ActiveDocument.Object("TextDocument");

                var selection = document.Selection;
                selection.StartOfDocument(false);
                selection.EndOfDocument(true);
                selection.Delete();

                var point = document.EndPoint.CreateEditPoint();
                point.Insert(statement);

                LogoPanel.SetMode(scriptEditorControl, LogoPanel.PanelMode.LoadFomDB);

                var server   = scriptEditorControl.Connection.ServerName;
                var database = scriptEditorControl.Connection.AdvancedOptions.Get("DATABASE");

                using (var client = new SSASQueryAnalyzerClient(server, database))
                {
                    client.ExecutionProgressControlEnabled       = true;
                    client.ExecutionProgressControl.TitleMessage = "FromBatch";

                    analysisServerResultsControl.ResizeFor(client.ExecutionProgressControl);
                    analysisServerResultsControl.Controls.Add(client.ExecutionProgressControl);

                    var analyzerStatistics = await client.AnalyzeFromBatchAsync(connectionStringBatch, batchID);

                    ValidateFromBatchAnalysisSettings(analyzerStatistics.ColdCacheExecutionResult.ASQAServerConfig);

                    var control = client.BuildLoadBatchResultControl(analyzerStatistics);
                    analysisServerResultsControl.ResizeFor(control);
                    analysisServerResultsControl.Controls.Add(control);
                }

                onExecuted?.Invoke();
            }
            catch (Exception ex)
            {
                analysisServerResultsControl.Controls.Add(CustomErrorControl.CreateFromException(ex));
            }
        }
        private async void OnComboBoxSSASInstances_SelectionChangeCommitted(object sender, EventArgs e)
        {
            try
            {
                var helper = (AsqaHelperControl)this.Parent.Parent.Parent.Parent;
                helper.WaitStart();
                try
                {
                    SetASQAAssemblyControlsDisabled();

                    using (var client = new SSASQueryAnalyzerClient(GetCurrentSSASInstanceConnectionString()))
                    {
                        _assemblyVersion = await client.GetVersionAsync();

                        _ssasInstanceConnected = true;
                        _assemblyInstalled     = _assemblyVersion != null;

                        if (_assemblyInstalled)
                        {
                            LoadEngineConfiguration(await client.GetConfigurationForEngineAsync());
                            LoadTraceEventsConfiguration(await client.GetConfigurationForTraceEventsAsync());
                            LoadPerformanceCountersConfiguration(await client.GetConfigurationForPerformanceCountersAsync());
                        }
                    }

                    EnableASQAAssemblyControls();
                }
                finally
                {
                    helper.WaitStop();
                }
            }
            catch (Exception ex)
            {
                ex.HandleException(display: true);
            }
        }
Esempio n. 6
0
        public static async void ExecuteAnalysisAsync(Action onExecuted = null)
        {
            if (_dte.ActiveDocument.ActiveWindow == null)
            {
                return;
            }

            var scriptEditorControl = GetCurrentAnalysisWindowEditorControl();

            if (scriptEditorControl == null)
            {
                return;
            }

            var analysisServerResultsControl = RestoreAnalysisServerResultsControl(scriptEditorControl, showOriginalControls: false);

            try
            {
                var document  = (TextDocument)_dte.ActiveDocument.Object("TextDocument");
                var statement = (document.Selection.Text.Length > 0 ? document.Selection.Text : document.StartPoint.CreateEditPoint().GetText(document.EndPoint)).Trim();
                if (statement.Length == 0)
                {
                    return;
                }

                var server   = scriptEditorControl.Connection.ServerName;
                var database = scriptEditorControl.Connection.AdvancedOptions.Get("DATABASE");

                LogoPanel.SetMode(scriptEditorControl, LogoPanel.PanelMode.Live);

                using (var client = new SSASQueryAnalyzerClient(server, database))
                {
                    using (var config = await client.GetConfigurationForTraceEventsAsync())
                        ValidateLiveAnalysisSettings(config);

                    client.DebugToXml = Settings.Default.DebugEnabled;
                    client.ExecutionProgressControlEnabled            = true;
                    client.ExecutionProgressControl.ActivitiesEnabled = Settings.Default.ExecutionProgressActivitiesEnabled;
                    client.ExecutionProgressControl.TitleMessage      = "Live";

                    analysisServerResultsControl.ResizeFor(client.ExecutionProgressControl);
                    analysisServerResultsControl.Controls.Add(client.ExecutionProgressControl);

                    var analyzerStatistics = await client.AnalyzeAsync(statement, queryResultRowLimit : Settings.Default.MaxRowsReturned);

                    {
                        LogoPanel.SetValues(scriptEditorControl,
                                            columns: analyzerStatistics.ColdCacheExecutionResult.QueryResults.Columns.Count,
                                            rows: analyzerStatistics.ColdCacheExecutionResult.QueryResults.Rows.Count
                                            );

                        var control = client.BuildResultControl(analyzerStatistics);

                        analysisServerResultsControl.ResizeFor(control);
                        analysisServerResultsControl.Controls.Add(control);
                    }
                }

                onExecuted?.Invoke();
            }
            catch (Exception ex)
            {
                analysisServerResultsControl.Controls.Add(CustomErrorControl.CreateFromException(ex));
            }
        }
        public async Task SaveConfigurationAsync()
        {
            if (_ssasInstanceConnected && _assemblyInstalled)
            {
                var helper = (AsqaHelperControl)this.Parent.Parent.Parent.Parent;
                helper.WaitStart();
                try
                {
                    var optionalEvents = treeViewProfilerEvents.Nodes.Cast <TreeNode>()
                                         .SelectMany((n) => n.Nodes.Cast <TreeNode>())
                                         .Where((n) => n.Checked)
                                         .Select((n) => new
                    {
                        Id = Convert.ToInt32(n.Tag)
                    });

                    var optionalCounters = treeViewPerformanceCounters.Nodes.Cast <TreeNode>()
                                           .SelectMany((n) => n.Nodes.Cast <TreeNode>())
                                           .Where((n) => n.Checked)
                                           .Select((n) => new
                    {
                        Category = Convert.ToString(n.Tag),
                        Name     = n.Name
                    });

                    string xconfig = new XDocument(
                        new XElement(ProcedureConfiguration.XConfigRoot,
                                     new XElement(ProcedureConfiguration.XConfigEngineItem,
                                                  new XAttribute(ProcedureConfiguration.XConfigEngineAttributeTraceEventsThreshold, radioButtonEventsThresholdLimited.Checked ? numericUpDownEventsThreshold.Value : ProcedureConfiguration.XConfigEngineAttributeTraceEventsThresholdUnlimited),
                                                  new XAttribute(ProcedureConfiguration.XConfigEngineAttributeClearCacheMode,
                                                                 radioButtonClearCacheMode_CurrentCube.Checked ? ClearCacheMode.CurrentCube :
                                                                 radioButtonClearCacheMode_CurrentDatabase.Checked ? ClearCacheMode.CurrentDatabase :
                                                                 radioButtonClearCacheMode_AllDatabases.Checked ? ClearCacheMode.AllDatabases :
                                                                 radioButtonClearCacheModeFileSystemOnly.Checked ? ClearCacheMode.FileSystemOnly :
                                                                 radioButtonClearCacheMode_CurrentCubeAndFileSystem.Checked ? ClearCacheMode.CurrentCubeAndFileSystem :
                                                                 radioButtonClearCacheMode_CurrentDatabaseAndFileSystem.Checked ? ClearCacheMode.CurrentDatabaseAndFileSystem :
                                                                 radioButtonClearCacheMode_AllDatabasesAndFileSystem.Checked ? ClearCacheMode.AllDatabasesAndFileSystem :
                                                                 ProcedureConfiguration.XConfigEngineAttributeClearCacheModeDefault)
                                                  ),
                                     new XElement(ProcedureConfiguration.XConfigTraceCollection,
                                                  optionalEvents.Select((x) =>
                                                                        new XElement(ProcedureConfiguration.XConfigTraceItem,
                                                                                     new XAttribute(ProcedureConfiguration.XConfigTraceAttributeId, x.Id)))
                                                  ),
                                     new XElement(ProcedureConfiguration.XConfigPerformanceCollection,
                                                  optionalCounters.Select((x) =>
                                                                          new XElement(ProcedureConfiguration.XConfigPerformanceItem,
                                                                                       new XAttribute(ProcedureConfiguration.XConfigPerformanceAttributeCategory, x.Category),
                                                                                       new XAttribute(ProcedureConfiguration.XConfigPerformanceAttributeName, x.Name)
                                                                                       ))
                                                  )
                                     )
                        ).ToString(SaveOptions.DisableFormatting);

                    using (var client = new SSASQueryAnalyzerClient(GetCurrentSSASInstanceConnectionString()))
                        await client.ReconfigureAsync(xconfig);
                }
                finally
                {
                    helper.WaitStop();
                }
            }
        }
Esempio n. 8
0
 public ResultPresenterExecutionProgressControl(SSASQueryAnalyzerClient analyzerClient)
     : this()
 {
     _analyzerClient = analyzerClient;
 }