public static AnalyzerExecutionResult CreateFromDataSet(DataSet dataset) { #region Argument exception if (dataset == null) { throw new ArgumentNullException("dataset"); } #endregion // TODO: implementare gestione cancellationToken.CancellationRequested var result = new AnalyzerExecutionResult() { EnginePerformances = EnginePerformanceCollection.CreateFromDataSet(dataset), AggregationsReads = AggregationsReadCollection.CreateFromDataSet(dataset), PartitionsReads = PartitionsReadCollection.CreateFromDataSet(dataset), CachesReads = CachesReadCollection.CreateFromDataSet(dataset), Performances = PerformanceItemCollectionList.CreateFromDataSet(dataset), Profilers = ProfilerItemCollectionList.CreateFromDataSet(dataset), ProcedureEvents = ProcedureEventCollection.CreateFromDataSet(dataset), QueryResults = QueryResult.CreateFromDataSet(dataset), }; var table = dataset.Tables["ExecutionInfo", "Common"]; if (table != null) { result.ExecutionInfo = table.Copy(); } return(result); }
public static AnalyzerExecutionResult CreateFromBatch(string connectionStringBatch, string batchID, ClearCacheMode clearCacheMode) { // TODO: parallelizzare e sistemare codice Action <string, Action <DataTable>, Action <SqlParameterCollection> > load = (commandText, action, param) => { using (var connection = new SqlConnection(connectionStringBatch)) { connection.Open(); using (var command = connection.CreateCommand()) { command.CommandType = CommandType.StoredProcedure; command.CommandText = commandText; command.Parameters.Add(new SqlParameter("@batchID", SqlDbType.UniqueIdentifier)).Value = Guid.Parse(batchID); command.Parameters.Add(new SqlParameter("@clearCacheMode", SqlDbType.NVarChar)).Value = clearCacheMode; param(command.Parameters); using (var reader = command.ExecuteReader()) using (var table = new DataTable()) { table.Load(reader); action(table); } } } }; var result = new AnalyzerExecutionResult(); load("[asqa].[sp_read_CommonEnginePerformance]", (table) => result.EnginePerformances = EnginePerformanceCollection.CreateFromDataTable(table), (param) => { }); load("[asqa].[sp_read_CommonAggregationsRead]", (table) => result.AggregationsReads = AggregationsReadCollection.CreateFromDataTable(table), (param) => { }); load("[asqa].[sp_read_CommonPartitionsRead]", (table) => result.PartitionsReads = PartitionsReadCollection.CreateFromDataTable(table), (param) => { }); load("[asqa].[sp_read_CommonCachesRead]", (table) => result.CachesReads = CachesReadCollection.CreateFromDataTable(table), (param) => { }); load("[asqa].[sp_read_ExecutionInfo]", (table) => result.ExecutionInfo = table.Copy(), (param) => { }); #region Load performance DataTable performanceTypes = null; load("[asqa].[sp_read_PerformanceTypes]", (table) => performanceTypes = table.Copy(), (param) => { }); result.Performances = new PerformanceItemCollectionList(); foreach (DataRow type in performanceTypes.Rows) { string category = Convert.ToString(type["CategoryName"]); string name = Convert.ToString(type["CounterName"]); load("[asqa].[sp_read_Performance]", (table) => result.Performances.Add(PerformanceItemCollection.CreateFromDataTable(table, category, name)), (param) => { param.Add(new SqlParameter("@categoryName", SqlDbType.NVarChar)).Value = category; param.Add(new SqlParameter("@counterName", SqlDbType.NVarChar)).Value = name; }); } #endregion #region Load trace DataTable profilerTypes = null; load("[asqa].[sp_read_TraceTypes]", (table) => profilerTypes = table.Copy(), (param) => { }); result.Profilers = new ProfilerItemCollectionList(); foreach (DataRow type in profilerTypes.Rows) { string eventClass = type["EventClass"].ToString(); load("[asqa].[sp_read_Trace]", (table) => result.Profilers.Add(ProfilerItemCollection.CreateFromDataTable(table, eventClass)), (param) => param.Add(new SqlParameter("@eventClass", SqlDbType.NVarChar)).Value = eventClass); } #endregion return(result); }