Skip to content
Merged

Dev #655

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 62 additions & 86 deletions sp_HealthParser/sp_HealthParser.sql
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@max_event_time datetime2(7),
@dsql nvarchar(max) = N'',
@mdsql_template nvarchar(max) = N'',
@mdsql_execute nvarchar(MAX) = N'';
@mdsql_execute nvarchar(max) = N'',
@start_date_debug nvarchar(50),
@end_date_debug nvarchar(50);

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

/*
Normalize dates to UTC offset for comparison with system_health events
When dates are NULL, use SYSUTCDATETIME() which is already UTC
When dates are provided, SWITCHOFFSET converts from any timezone to UTC
This matches sp_QuickieStore pattern for handling date conversions
*/
SELECT
@start_date =
CASE
WHEN @start_date IS NULL
THEN
DATEADD
(
MINUTE,
DATEDIFF
(
MINUTE,
SYSDATETIME(),
GETUTCDATE()
),
DATEADD
(
DAY,
-7,
SYSDATETIME()
)
)
ELSE
DATEADD
(
MINUTE,
DATEDIFF
(
MINUTE,
SYSDATETIME(),
GETUTCDATE()
),
@start_date
)
END,
ISNULL
(
SWITCHOFFSET
(
@start_date,
'+00:00'
),
DATEADD
(
DAY,
-7,
SYSUTCDATETIME()
)
),
@end_date =
CASE
WHEN @end_date IS NULL
THEN
DATEADD
(
MINUTE,
DATEDIFF
(
MINUTE,
SYSDATETIME(),
GETUTCDATE()
),
SYSDATETIME()
)
ELSE
DATEADD
(
MINUTE,
DATEDIFF
(
MINUTE,
SYSDATETIME(),
GETUTCDATE()
),
@end_date
)
END,
ISNULL
(
SWITCHOFFSET
(
@end_date,
'+00:00'
),
SYSUTCDATETIME()
),
@wait_round_interval_minutes = /*do this i guess?*/
CASE
WHEN @wait_round_interval_minutes < 1
Expand Down Expand Up @@ -407,33 +379,37 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
OPTION(RECOMPILE);
',
@mdsql_template = N'
IF OBJECT_ID(''{table_check}'', ''U'') IS NOT NULL
BEGIN
SELECT
@max_event_time =
ISNULL
IF OBJECT_ID(''{table_check}'', ''U'') IS NOT NULL
BEGIN
SELECT
@max_event_time =
ISNULL
(
MAX({date_column}),
DATEADD
(
MINUTE,
DATEDIFF
(
MAX({date_column}),
DATEADD
(
MINUTE,
DATEDIFF
(
MINUTE,
SYSDATETIME(),
GETUTCDATE()
),
DATEADD
(
DAY,
-1,
SYSDATETIME()
)
)
MINUTE,
SYSDATETIME(),
GETUTCDATE()
),
DATEADD
(
DAY,
-1,
SYSDATETIME()
)
FROM {table_check};
END;
';
)
)
FROM {table_check};
END;
';

SELECT
@start_date_debug = @start_date,
@end_date_debug = @end_date;

IF @timestamp_utc_mode = 0
BEGIN
Expand Down Expand Up @@ -1414,7 +1390,7 @@ AND ca.utc_timestamp < @end_date';

IF @debug = 1
BEGIN
RAISERROR('Executing collection SQL', 0, 0) WITH NOWAIT;
RAISERROR('Executing collection SQL for dates between %s and %s', 0, 0, @start_date_debug, @end_date_debug) WITH NOWAIT;
SET STATISTICS XML ON;
END;

Expand Down
45 changes: 43 additions & 2 deletions sp_QueryReproBuilder/sp_QueryReproBuilder.sql
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SET ANSI_NULLS ON;
SET ANSI_NULLS ON;
SET ANSI_PADDING ON;
SET ANSI_WARNINGS ON;
SET ARITHABORT ON;
Expand All @@ -9,8 +9,49 @@ SET IMPLICIT_TRANSACTIONS OFF;
SET STATISTICS TIME, IO OFF;
GO

/*
██████╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗
██╔═══██╗██║ ██║██╔════╝██╔══██╗╚██╗ ██╔╝
██║ ██║██║ ██║█████╗ ██████╔╝ ╚████╔╝
██║▄▄ ██║██║ ██║██╔══╝ ██╔══██╗ ╚██╔╝
╚██████╔╝╚██████╔╝███████╗██║ ██║ ██║
╚══▀▀═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝

██████╗ ███████╗██████╗ ██████╗ ██████╗
██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔═══██╗
██████╔╝█████╗ ██████╔╝██████╔╝██║ ██║
██╔══██╗██╔══╝ ██╔═══╝ ██╔══██╗██║ ██║
██║ ██║███████╗██║ ██║ ██║╚██████╔╝
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝

██████╗ ██╗ ██╗██╗██╗ ██████╗ ███████╗██████╗
██╔══██╗██║ ██║██║██║ ██╔══██╗██╔════╝██╔══██╗
██████╔╝██║ ██║██║██║ ██║ ██║█████╗ ██████╔╝
██╔══██╗██║ ██║██║██║ ██║ ██║██╔══╝ ██╔══██╗
██████╔╝╚██████╔╝██║███████╗██████╔╝███████╗██║ ██║
╚═════╝ ╚═════╝ ╚═╝╚══════╝╚═════╝ ╚══════╝╚═╝ ╚═╝

Copyright 2026 Darling Data, LLC
https://www.erikdarling.com/

For usage and licensing details, run:
EXECUTE sp_QueryReproBuilder
@help = 1;

For working through errors:
EXECUTE sp_QueryReproBuilder
@debug = 1;

For support, head over to GitHub:
https://code.erikdarling.com

*/

IF OBJECT_ID(N'dbo.sp_QueryReproBuilder', N'P') IS NULL
EXECUTE (N'CREATE PROCEDURE dbo.sp_QueryReproBuilder AS RETURN 138;');
GO

CREATE OR ALTER PROCEDURE
ALTER PROCEDURE
dbo.sp_QueryReproBuilder
(
@database_name sysname = NULL, /*the name of the database you want to look at query store in*/
Expand Down