Skip to content

Commit 1af3788

Browse files
authored
Added checks for unusual Query Store configuration and Query Store trace flags
1 parent 8900dcb commit 1af3788

1 file changed

Lines changed: 50 additions & 2 deletions

File tree

sp_Blitz.sql

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8490,11 +8490,11 @@ IF @ProductVersionMajor >= 10
84908490
WHEN [T].[TraceFlag] = '3226' THEN '3226 enabled globally, which keeps the event log clean by not reporting successful backups.'
84918491
WHEN [T].[TraceFlag] = '3505' THEN '3505 enabled globally, which disables Checkpoints. This is usually a very bad idea.'
84928492
WHEN [T].[TraceFlag] = '4199' THEN '4199 enabled globally, which enables non-default Query Optimizer fixes, changing query plans from the default behaviors.'
8493-
WHEN [T].[TraceFlag] = '7745' AND @ProductVersionMajor > 12 AND @QueryStoreInUse = 1 THEN '7745 enabled globally, which makes shutdowns/failovers quicker by not waiting for Query Store to flush to disk. This good idea loses you the non-flushed Query Store data.'
8493+
WHEN [T].[TraceFlag] = '7745' AND @QueryStoreInUse = 1 THEN '7745 enabled globally, which makes shutdowns/failovers quicker by not waiting for Query Store to flush to disk. This good idea loses you the non-flushed Query Store data.'
84948494
WHEN [T].[TraceFlag] = '7745' AND @ProductVersionMajor > 12 THEN '7745 enabled globally, which is for Query Store. None of your databases have Query Store enabled, so why do you have this turned on?'
84958495
WHEN [T].[TraceFlag] = '7745' AND @ProductVersionMajor <= 12 THEN '7745 enabled globally, which is for Query Store. Query Store does not exist on your SQL Server version, so why do you have this turned on?'
84968496
WHEN [T].[TraceFlag] = '7752' AND @ProductVersionMajor > 14 THEN '7752 enabled globally, which is for Query Store. However, it has no effect in your SQL Server version. Consider turning it off.'
8497-
WHEN [T].[TraceFlag] = '7752' AND @ProductVersionMajor > 12 AND @QueryStoreInUse = 1 THEN '7752 enabled globally, which stops queries needing to wait on Query Store loading up after database recovery.'
8497+
WHEN [T].[TraceFlag] = '7752' AND @QueryStoreInUse = 1 THEN '7752 enabled globally, which stops queries needing to wait on Query Store loading up after database recovery.'
84988498
WHEN [T].[TraceFlag] = '7752' AND @ProductVersionMajor > 12 THEN '7752 enabled globally, which is for Query Store. None of your databases have Query Store enabled, so why do you have this turned on?'
84998499
WHEN [T].[TraceFlag] = '7752' AND @ProductVersionMajor <= 12 THEN '7752 enabled globally, which is for Query Store. Query Store does not exist on your SQL Server version, so why do you have this turned on?'
85008500
WHEN [T].[TraceFlag] = '8048' THEN '8048 enabled globally, which tries to reduce CMEMTHREAD waits on servers with a lot of logical processors.'
@@ -8504,6 +8504,54 @@ IF @ProductVersionMajor >= 10
85048504
ELSE [T].[TraceFlag] + ' is enabled globally.' END
85058505
AS Details
85068506
FROM #TraceStatus T;
8507+
8508+
8509+
IF NOT EXISTS ( SELECT 1
8510+
FROM #TraceStatus T
8511+
WHERE [T].[TraceFlag] = '7745' )
8512+
AND @QueryStoreInUse = 1
8513+
8514+
BEGIN
8515+
INSERT INTO #BlitzResults
8516+
( CheckID ,
8517+
Priority ,
8518+
FindingsGroup ,
8519+
Finding ,
8520+
URL ,
8521+
Details
8522+
)
8523+
SELECT 74 AS CheckID ,
8524+
200 AS Priority ,
8525+
'Informational' AS FindingsGroup ,
8526+
'Recommended Trace Flag Off' AS Finding ,
8527+
'https://www.sqlskills.com/blogs/erin/query-store-trace-flags/' AS URL ,
8528+
'Trace Flag 7745 not enabled globally. It makes shutdowns/failovers quicker by not waiting for Query Store to flush to disk. It is recommended, but it loses you the non-flushed Query Store data.' AS Details
8529+
FROM #TraceStatus T
8530+
END;
8531+
8532+
IF NOT EXISTS ( SELECT 1
8533+
FROM #TraceStatus T
8534+
WHERE [T].[TraceFlag] = '7752' )
8535+
AND @ProductVersionMajor < 15
8536+
AND @QueryStoreInUse = 1
8537+
8538+
BEGIN
8539+
INSERT INTO #BlitzResults
8540+
( CheckID ,
8541+
Priority ,
8542+
FindingsGroup ,
8543+
Finding ,
8544+
URL ,
8545+
Details
8546+
)
8547+
SELECT 74 AS CheckID ,
8548+
200 AS Priority ,
8549+
'Informational' AS FindingsGroup ,
8550+
'Recommended Trace Flag Off' AS Finding ,
8551+
'https://www.sqlskills.com/blogs/erin/query-store-trace-flags/' AS URL ,
8552+
'Trace Flag 7752 not enabled globally. It stops queries needing to wait on Query Store loading up after database recovery. It is so recommended that it is enabled by default as of SQL Server 2019.' AS Details
8553+
FROM #TraceStatus T
8554+
END;
85078555
END;
85088556

85098557
/* High CMEMTHREAD waits that could need trace flag 8048.

0 commit comments

Comments
 (0)