public static void HandleException(this Exception exception, bool display) { var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SSASQueryAnalyzer"); Directory.CreateDirectory(path); path = Path.Combine(path, "SSASQueryAnalyzer.SSMS.log"); File.AppendAllText(path, "{0}\r\n{1}\r\n{0}\r\n{2}\r\n".FormatWith("********************", DateTime.UtcNow, exception)); if (exception is AggregateException) { exception = (exception as AggregateException).Flatten(); if (exception.InnerException != null) { exception = exception.InnerException; } } using (var form = new Form()) { form.Text = "SSASQueryAnalyzer - Exception"; form.MaximizeBox = false; form.MinimizeBox = false; form.StartPosition = FormStartPosition.CenterScreen; form.Controls.Add(CustomErrorControl.CreateFromException(exception, dialogMode: true, errorFile: path)); form.Width = Screen.FromControl(form).Bounds.Width / 2; form.ShowDialog(); } }
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)); } }
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)); } }