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(); } } }
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)); } }
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); } }
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(); } } }
public ResultPresenterExecutionProgressControl(SSASQueryAnalyzerClient analyzerClient) : this() { _analyzerClient = analyzerClient; }