Skip to content

Commit 6c91537

Browse files
committed
Added checks for maintenance plans
180 checks for shrink database steps 181 checks for repetitive maintenance (rebuild and reorg or rebuild and update stats)
1 parent 75c3596 commit 6c91537

File tree

1 file changed

+78
-1
lines changed

1 file changed

+78
-1
lines changed

sp_Blitz.sql

Lines changed: 78 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3452,7 +3452,84 @@ IF @ProductVersionMajor >= 10 AND @ProductVersionMinor >= 50
34523452
OR UPPER(name) LIKE UPPER('%\PIOLEDB.DLL') OR UPPER(name) LIKE UPPER('%\PISDK.DLL') /* OSISoft PI data access */
34533453

34543454
END
3455-
3455+
3456+
/*Find shrink database tasks*/
3457+
3458+
IF NOT EXISTS ( SELECT 1
3459+
FROM #SkipChecks
3460+
WHERE DatabaseName IS NULL AND CheckID = 180 )
3461+
BEGIN
3462+
;
3463+
WITH XMLNAMESPACES ('www.microsoft.com/SqlServer/Dts' AS [dts])
3464+
,[maintenance_plan_steps] AS (
3465+
SELECT [name]
3466+
, CAST(CAST([packagedata] AS VARBINARY(MAX)) AS XML) AS [maintenance_plan_xml]
3467+
FROM [msdb].[dbo].[sysssispackages]
3468+
WHERE [packagetype] = 6
3469+
)
3470+
INSERT INTO [#BlitzResults]
3471+
( [CheckID] ,
3472+
[Priority] ,
3473+
[FindingsGroup] ,
3474+
[Finding] ,
3475+
[URL] ,
3476+
[Details] )
3477+
SELECT
3478+
180 AS [CheckID] ,
3479+
100 AS [Priority] ,
3480+
'Performance' AS [FindingsGroup] ,
3481+
'Shrink Database Step In Maintenance Plan' AS [Finding] ,
3482+
'http://BrentOzar.com/go/autoshrink' AS [URL] ,
3483+
'The maintenance plan ' + [mps].[name] + ' has a step to shrink databases in it. Shrinking databases is as outdated as maintenance plans.' AS [Details]
3484+
FROM [maintenance_plan_steps] [mps]
3485+
CROSS APPLY [maintenance_plan_xml].[nodes]('//dts:Executables/dts:Executable') [t]([c])
3486+
WHERE [c].[value]('(@dts:ObjectName)', 'VARCHAR(128)') = 'Shrink Database Task'
3487+
3488+
END
3489+
3490+
3491+
/*Find repetitive maintenance tasks*/
3492+
IF NOT EXISTS ( SELECT 1
3493+
FROM #SkipChecks
3494+
WHERE DatabaseName IS NULL AND CheckID = 181 )
3495+
BEGIN
3496+
;
3497+
WITH XMLNAMESPACES ('www.microsoft.com/SqlServer/Dts' AS [dts])
3498+
,[maintenance_plan_steps] AS (
3499+
SELECT [name]
3500+
, CAST(CAST([packagedata] AS VARBINARY(MAX)) AS XML) AS [maintenance_plan_xml]
3501+
FROM [msdb].[dbo].[sysssispackages]
3502+
WHERE [packagetype] = 6
3503+
), [maintenance_plan_table] AS (
3504+
SELECT [mps].[name]
3505+
,[c].[value]('(@dts:ObjectName)', 'NVARCHAR(128)') AS [step_name]
3506+
FROM [maintenance_plan_steps] [mps]
3507+
CROSS APPLY [maintenance_plan_xml].[nodes]('//dts:Executables/dts:Executable') [t]([c])
3508+
), [mp_steps_pretty] AS (SELECT DISTINCT [m1].[name] ,
3509+
STUFF((SELECT N', ' + [m2].[step_name] FROM [maintenance_plan_table] AS [m2] WHERE [m1].[name] = [m2].[name]
3510+
FOR XML PATH(N'')), 1, 2, N'') AS [maintenance_plan_steps]
3511+
FROM [maintenance_plan_table] AS [m1])
3512+
3513+
INSERT INTO [#BlitzResults]
3514+
( [CheckID] ,
3515+
[Priority] ,
3516+
[FindingsGroup] ,
3517+
[Finding] ,
3518+
[URL] ,
3519+
[Details] )
3520+
3521+
SELECT
3522+
181 AS [CheckID] ,
3523+
100 AS [Priority] ,
3524+
'Performance' AS [FindingsGroup] ,
3525+
'Repetitive Steps In Maintenance Plans' AS [Finding] ,
3526+
'https://ola.hallengren.com/' AS [URL] ,
3527+
'The maintenance plan ' + [m].[name] + ' is doing repetitive work on indexes and statistics. Perhaps it''s time to try something more modern?' AS [Details]
3528+
FROM [mp_steps_pretty] m
3529+
WHERE m.[maintenance_plan_steps] LIKE '%Rebuild%Reorganize%'
3530+
OR m.[maintenance_plan_steps] LIKE '%Rebuild%Update%'
3531+
3532+
END
34563533

34573534

34583535
IF @CheckUserDatabaseObjects = 1

0 commit comments

Comments
 (0)