Skip to content

Commit d2809f3

Browse files
Merge pull request #655 from erikdarlingdata/dev
Dev
2 parents e89f292 + c5c8b74 commit d2809f3

2 files changed

Lines changed: 105 additions & 88 deletions

File tree

sp_HealthParser/sp_HealthParser.sql

Lines changed: 62 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
263263
@max_event_time datetime2(7),
264264
@dsql nvarchar(max) = N'',
265265
@mdsql_template nvarchar(max) = N'',
266-
@mdsql_execute nvarchar(MAX) = N'';
266+
@mdsql_execute nvarchar(max) = N'',
267+
@start_date_debug nvarchar(50),
268+
@end_date_debug nvarchar(50);
267269

268270
IF @azure = 1
269271
BEGIN
@@ -276,68 +278,38 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
276278
RAISERROR('Fixing parameters and variables', 0, 0) WITH NOWAIT;
277279
END;
278280

281+
/*
282+
Normalize dates to UTC offset for comparison with system_health events
283+
When dates are NULL, use SYSUTCDATETIME() which is already UTC
284+
When dates are provided, SWITCHOFFSET converts from any timezone to UTC
285+
This matches sp_QuickieStore pattern for handling date conversions
286+
*/
279287
SELECT
280288
@start_date =
281-
CASE
282-
WHEN @start_date IS NULL
283-
THEN
284-
DATEADD
285-
(
286-
MINUTE,
287-
DATEDIFF
288-
(
289-
MINUTE,
290-
SYSDATETIME(),
291-
GETUTCDATE()
292-
),
293-
DATEADD
294-
(
295-
DAY,
296-
-7,
297-
SYSDATETIME()
298-
)
299-
)
300-
ELSE
301-
DATEADD
302-
(
303-
MINUTE,
304-
DATEDIFF
305-
(
306-
MINUTE,
307-
SYSDATETIME(),
308-
GETUTCDATE()
309-
),
310-
@start_date
311-
)
312-
END,
289+
ISNULL
290+
(
291+
SWITCHOFFSET
292+
(
293+
@start_date,
294+
'+00:00'
295+
),
296+
DATEADD
297+
(
298+
DAY,
299+
-7,
300+
SYSUTCDATETIME()
301+
)
302+
),
313303
@end_date =
314-
CASE
315-
WHEN @end_date IS NULL
316-
THEN
317-
DATEADD
318-
(
319-
MINUTE,
320-
DATEDIFF
321-
(
322-
MINUTE,
323-
SYSDATETIME(),
324-
GETUTCDATE()
325-
),
326-
SYSDATETIME()
327-
)
328-
ELSE
329-
DATEADD
330-
(
331-
MINUTE,
332-
DATEDIFF
333-
(
334-
MINUTE,
335-
SYSDATETIME(),
336-
GETUTCDATE()
337-
),
338-
@end_date
339-
)
340-
END,
304+
ISNULL
305+
(
306+
SWITCHOFFSET
307+
(
308+
@end_date,
309+
'+00:00'
310+
),
311+
SYSUTCDATETIME()
312+
),
341313
@wait_round_interval_minutes = /*do this i guess?*/
342314
CASE
343315
WHEN @wait_round_interval_minutes < 1
@@ -407,33 +379,37 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
407379
OPTION(RECOMPILE);
408380
',
409381
@mdsql_template = N'
410-
IF OBJECT_ID(''{table_check}'', ''U'') IS NOT NULL
411-
BEGIN
412-
SELECT
413-
@max_event_time =
414-
ISNULL
382+
IF OBJECT_ID(''{table_check}'', ''U'') IS NOT NULL
383+
BEGIN
384+
SELECT
385+
@max_event_time =
386+
ISNULL
387+
(
388+
MAX({date_column}),
389+
DATEADD
390+
(
391+
MINUTE,
392+
DATEDIFF
415393
(
416-
MAX({date_column}),
417-
DATEADD
418-
(
419-
MINUTE,
420-
DATEDIFF
421-
(
422-
MINUTE,
423-
SYSDATETIME(),
424-
GETUTCDATE()
425-
),
426-
DATEADD
427-
(
428-
DAY,
429-
-1,
430-
SYSDATETIME()
431-
)
432-
)
394+
MINUTE,
395+
SYSDATETIME(),
396+
GETUTCDATE()
397+
),
398+
DATEADD
399+
(
400+
DAY,
401+
-1,
402+
SYSDATETIME()
433403
)
434-
FROM {table_check};
435-
END;
436-
';
404+
)
405+
)
406+
FROM {table_check};
407+
END;
408+
';
409+
410+
SELECT
411+
@start_date_debug = @start_date,
412+
@end_date_debug = @end_date;
437413

438414
IF @timestamp_utc_mode = 0
439415
BEGIN
@@ -1414,7 +1390,7 @@ AND ca.utc_timestamp < @end_date';
14141390

14151391
IF @debug = 1
14161392
BEGIN
1417-
RAISERROR('Executing collection SQL', 0, 0) WITH NOWAIT;
1393+
RAISERROR('Executing collection SQL for dates between %s and %s', 0, 0, @start_date_debug, @end_date_debug) WITH NOWAIT;
14181394
SET STATISTICS XML ON;
14191395
END;
14201396

sp_QueryReproBuilder/sp_QueryReproBuilder.sql

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
SET ANSI_NULLS ON;
1+
SET ANSI_NULLS ON;
22
SET ANSI_PADDING ON;
33
SET ANSI_WARNINGS ON;
44
SET ARITHABORT ON;
@@ -9,8 +9,49 @@ SET IMPLICIT_TRANSACTIONS OFF;
99
SET STATISTICS TIME, IO OFF;
1010
GO
1111

12+
/*
13+
██████╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗
14+
██╔═══██╗██║ ██║██╔════╝██╔══██╗╚██╗ ██╔╝
15+
██║ ██║██║ ██║█████╗ ██████╔╝ ╚████╔╝
16+
██║▄▄ ██║██║ ██║██╔══╝ ██╔══██╗ ╚██╔╝
17+
╚██████╔╝╚██████╔╝███████╗██║ ██║ ██║
18+
╚══▀▀═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝
19+
20+
██████╗ ███████╗██████╗ ██████╗ ██████╗
21+
██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔═══██╗
22+
██████╔╝█████╗ ██████╔╝██████╔╝██║ ██║
23+
██╔══██╗██╔══╝ ██╔═══╝ ██╔══██╗██║ ██║
24+
██║ ██║███████╗██║ ██║ ██║╚██████╔╝
25+
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝
26+
27+
██████╗ ██╗ ██╗██╗██╗ ██████╗ ███████╗██████╗
28+
██╔══██╗██║ ██║██║██║ ██╔══██╗██╔════╝██╔══██╗
29+
██████╔╝██║ ██║██║██║ ██║ ██║█████╗ ██████╔╝
30+
██╔══██╗██║ ██║██║██║ ██║ ██║██╔══╝ ██╔══██╗
31+
██████╔╝╚██████╔╝██║███████╗██████╔╝███████╗██║ ██║
32+
╚═════╝ ╚═════╝ ╚═╝╚══════╝╚═════╝ ╚══════╝╚═╝ ╚═╝
33+
34+
Copyright 2026 Darling Data, LLC
35+
https://www.erikdarling.com/
36+
37+
For usage and licensing details, run:
38+
EXECUTE sp_QueryReproBuilder
39+
@help = 1;
40+
41+
For working through errors:
42+
EXECUTE sp_QueryReproBuilder
43+
@debug = 1;
44+
45+
For support, head over to GitHub:
46+
https://code.erikdarling.com
47+
48+
*/
49+
50+
IF OBJECT_ID(N'dbo.sp_QueryReproBuilder', N'P') IS NULL
51+
EXECUTE (N'CREATE PROCEDURE dbo.sp_QueryReproBuilder AS RETURN 138;');
52+
GO
1253

13-
CREATE OR ALTER PROCEDURE
54+
ALTER PROCEDURE
1455
dbo.sp_QueryReproBuilder
1556
(
1657
@database_name sysname = NULL, /*the name of the database you want to look at query store in*/

0 commit comments

Comments
 (0)