Skip to content

Commit 62a9612

Browse files
committed
Slow Queries tab Object Execution link
Add a link to Object Execution stats on the Object Name column in the Slow Queries tab.
1 parent 754561d commit 62a9612

File tree

7 files changed

+402
-363
lines changed

7 files changed

+402
-363
lines changed

DBADashDB/dbo/Stored Procedures/ObjectExecutionStatsSummary_Get.sql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
@Use60MIN BIT=NULL,
1212
@Use60MINCompare BIT=NULL,
1313
@ObjectID BIGINT=NULL,
14+
@ObjectName SYSNAME=NULL,
1415
@Debug BIT=0,
1516
@DaysOfWeek IDs READONLY, /* e.g. exclude weekends: Monday,Tuesday,Wednesday,Thursday,Friday. Filter applied in local timezone (@UTCOffset) */
1617
@Hours IDs READONLY, /* e.g. 9 to 5 : 9,10,11,12,13,14,15,16. Filter applied in local timezone (@UTCOffset) */
@@ -93,6 +94,7 @@ WITH base AS (
9394
' + CASE WHEN @Types IS NULL THEN '' ELSE 'AND EXISTS(SELECT 1 FROM STRING_SPLIT(@Types,'','') ss WHERE ss.Value = O.ObjectType)' END + '
9495
' + CASE WHEN @DatabaseID IS NULL THEN '' ELSE 'AND D.DatabaseID = @DatabaseID' END + '
9596
' + CASE WHEN @ObjectID IS NULL THEN '' ELSE 'AND OES.ObjectID = @ObjectID' END + '
97+
' + CASE WHEN @ObjectName IS NULL THEN '' ELSE 'AND O.ObjectName = @ObjectName' END + '
9698
' + CASE WHEN @DaysOfWeekCsv IS NULL THEN N'' ELSE 'AND DATEPART(dw,DATEADD(mi, @UTCOffset, OES.SnapshotDate)) IN (' + @DaysOfWeekCsv + ')' END + '
9799
' + CASE WHEN @HoursCsv IS NULL THEN N'' ELSE 'AND DATEPART(hh,DATEADD(mi, @UTCOffset, OES.SnapshotDate)) IN(' + @HoursCsv + ')' END + '
98100
GROUP BY OES.InstanceID,OES.ObjectID,I.ConnectionID,D.name,O.SchemaName,O.ObjectName,O.ObjectType,OT.TypeDescription
@@ -136,6 +138,7 @@ compare as(
136138
' + CASE WHEN @Types IS NULL THEN '' ELSE 'AND EXISTS(SELECT 1 FROM STRING_SPLIT(@Types,'','') ss WHERE ss.Value = O.ObjectType)' END + '
137139
' + CASE WHEN @DatabaseID IS NULL THEN '' ELSE 'AND D.DatabaseID = @DatabaseID' END + '
138140
' + CASE WHEN @ObjectID IS NULL THEN '' ELSE 'AND OES.ObjectID = @ObjectID' END + '
141+
' + CASE WHEN @ObjectName IS NULL THEN '' ELSE 'AND O.ObjectName = @ObjectName' END + '
139142
' + CASE WHEN @DaysOfWeekCsv IS NULL THEN N'' ELSE 'AND DATEPART(dw,DATEADD(mi, @UTCOffset, OES.SnapshotDate)) IN (' + @DaysOfWeekCsv + ')' END + '
140143
' + CASE WHEN @HoursCsv IS NULL THEN N'' ELSE 'AND DATEPART(hh,DATEADD(mi, @UTCOffset, OES.SnapshotDate)) IN(' + @HoursCsv + ')' END + '
141144
GROUP BY OES.InstanceID,OES.ObjectID,I.ConnectionID,D.name,O.SchemaName,O.ObjectName,O.ObjectType,OT.TypeDescription
@@ -198,6 +201,7 @@ EXEC sp_executesql @SQL,N'@InstanceID INT,
198201
@Types VARCHAR(200),
199202
@DatabaseID INT,
200203
@ObjectID BIGINT,
204+
@ObjectName SYSNAME,
201205
@UTCOffset INT,
202206
@InstanceIDs IDs READONLY',
203207
@InstanceID,
@@ -210,6 +214,7 @@ EXEC sp_executesql @SQL,N'@InstanceID INT,
210214
@Types,
211215
@DatabaseID,
212216
@ObjectID,
217+
@ObjectName,
213218
@UTCOffset,
214219
@InstanceIDs
215220
;

DBADashGUI/Common.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using ClosedXML.Excel;
22
using DBADash;
33
using DBADashGUI.CustomReports;
4+
using DBADashGUI.Performance;
45
using Microsoft.Data.SqlClient;
56
using System;
67
using System.Data;
@@ -849,5 +850,32 @@ public static void HighlightGridDifferences(DataGridView grid1, DataGridView gri
849850
}
850851
}
851852
}
853+
854+
private static FormState ObjectExecutionFormState;
855+
private static Form ObjectExecutionForm;
856+
857+
public static void ShowObjectExecutionSummary(DBADashContext context, Form parent)
858+
{
859+
ObjectExecutionFormState ??= new FormState()
860+
{
861+
Width = parent.Width / 2,
862+
Height = parent.Height / 2,
863+
};
864+
ObjectExecutionForm?.Close();
865+
ObjectExecutionForm = new Form()
866+
{
867+
Text = context.ObjectName
868+
};
869+
var oes = new ObjectExecutionSummary() { Dock = DockStyle.Fill, UseGlobalTime = false };
870+
oes.SetContext(context);
871+
ObjectExecutionForm.Controls.Add(oes);
872+
ObjectExecutionForm.FormClosed += (s, e) =>
873+
{
874+
ObjectExecutionForm = null;
875+
};
876+
FormState.ApplyFormState(ObjectExecutionForm, ObjectExecutionFormState);
877+
FormState.TrackFormState(ObjectExecutionForm, ObjectExecutionFormState);
878+
ObjectExecutionForm.Show();
879+
}
852880
}
853881
}

DBADashGUI/FormState.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public static void TrackFormState(Form form, FormState state)
2828
};
2929
form.LocationChanged += (s, e) =>
3030
{
31+
if (form.WindowState == FormWindowState.Minimized) return; // Don't persist minimized state
3132
state.Location = form.Location;
3233
};
3334
}

DBADashGUI/Performance/ObjectExecutionSummary.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ private DataTable GetObjectExecutionStatsSummary()
258258
}
259259

260260
cmd.Parameters.AddIfGreaterThanZero("ObjectID", ObjectID);
261+
cmd.Parameters.AddStringIfNotNullOrEmpty("ObjectName", CurrentContext.ObjectName);
261262
cmd.Parameters.AddIfGreaterThanZero("DatabaseID", DatabaseID);
262263

263264
if (HasCompare)

DBADashGUI/Performance/RunningQueries.cs

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,18 +1412,7 @@ private void ShowObject(DataRowView row)
14121412
context.ObjectName = row.Row.Field<string>("ObjectName");
14131413
context.InstanceID = row.Row.Field<int>("InstanceID");
14141414
context.Type = SQLTreeItem.TreeType.StoredProcedure;
1415-
var frm = new Form()
1416-
{
1417-
Text = context.ObjectName,
1418-
WindowState = FormWindowState.Maximized,
1419-
Width = this.Width / 2,
1420-
Height = this.Height / 2,
1421-
};
1422-
var oes = new ObjectExecutionSummary() { Dock = DockStyle.Fill, UseGlobalTime = false };
1423-
oes.SetContext(context);
1424-
frm.Controls.Add(oes);
1425-
1426-
frm.Show();
1415+
Common.ShowObjectExecutionSummary(context, ParentForm);
14271416
}
14281417

14291418
private static void ShowJob(DataRowView row)

0 commit comments

Comments
 (0)