@@ -18,6 +18,7 @@ ALTER PROCEDURE [dbo].[sp_BlitzFirst]
18
18
@OutputTableNamePerfmonStats NVARCHAR (256 ) = NULL ,
19
19
@OutputTableNameWaitStats NVARCHAR (256 ) = NULL ,
20
20
@OutputTableNameBlitzCache NVARCHAR (256 ) = NULL ,
21
+ @OutputTableRetentionDays TINYINT = 7 ,
21
22
@OutputXMLasNVARCHAR TINYINT = 0 ,
22
23
@FilterPlansByDatabase VARCHAR (MAX ) = NULL ,
23
24
@CheckProcedureCache TINYINT = 0 ,
@@ -2502,7 +2503,23 @@ BEGIN
2502
2503
@CheckDateOverride = @StartSampleTime,
2503
2504
@MinutesBack = @BlitzCacheMinutesBack,
2504
2505
@Debug = @Debug;
2506
+
2507
+ /* Delete history older than @OutputTableRetentionDays */
2508
+ SET @StringToExecute = N ' IF EXISTS(SELECT * FROM '
2509
+ + @OutputDatabaseName
2510
+ + ' .INFORMATION_SCHEMA.SCHEMATA WHERE QUOTENAME(SCHEMA_NAME) = '' '
2511
+ + @OutputSchemaName + ' '' ) DELETE '
2512
+ + @OutputDatabaseName + ' .'
2513
+ + @OutputSchemaName + ' .'
2514
+ + @OutputTableNameBlitzCache
2515
+ + ' WHERE ServerName = '' '
2516
+ + CAST (SERVERPROPERTY (' ServerName' ) AS NVARCHAR (128 ))
2517
+ + ' '' AND CheckDate < '' ' + CAST (CAST ( (DATEADD (DAY , - 1 * @OutputTableRetentionDays, GETDATE () ) ) AS DATE ) AS NVARCHAR (20 )) + ' '' ;' ;
2518
+ EXEC (@StringToExecute);
2519
+
2520
+
2505
2521
END
2522
+
2506
2523
ELSE /* No sp_BlitzCache found, or it's outdated */
2507
2524
BEGIN
2508
2525
INSERT INTO #BlitzFirstResults
@@ -2583,6 +2600,21 @@ BEGIN
2583
2600
+ CAST (SERVERPROPERTY (' ServerName' ) AS NVARCHAR (128 ))
2584
2601
+ ' '' , '' ' + (CONVERT (NVARCHAR (100 ), @StartSampleTime, 121 )) + ' '' , CheckID, Priority, FindingsGroup, Finding, URL, Details, HowToStopIt, QueryPlan, QueryText, StartTime, LoginName, NTUserName, OriginalLoginName, ProgramName, HostName, DatabaseID, DatabaseName, OpenTransactionCount, DetailsInt FROM #BlitzFirstResults ORDER BY Priority , FindingsGroup , Finding , Details' ;
2585
2602
EXEC (@StringToExecute);
2603
+
2604
+ /* Delete history older than @OutputTableRetentionDays */
2605
+ SET @StringToExecute = N ' IF EXISTS(SELECT * FROM '
2606
+ + @OutputDatabaseName
2607
+ + ' .INFORMATION_SCHEMA.SCHEMATA WHERE QUOTENAME(SCHEMA_NAME) = '' '
2608
+ + @OutputSchemaName + ' '' ) DELETE '
2609
+ + @OutputDatabaseName + ' .'
2610
+ + @OutputSchemaName + ' .'
2611
+ + @OutputTableName
2612
+ + ' WHERE ServerName = '' '
2613
+ + CAST (SERVERPROPERTY (' ServerName' ) AS NVARCHAR (128 ))
2614
+ + ' '' AND CheckDate < '' ' + CAST (CAST ( (DATEADD (DAY , - 1 * @OutputTableRetentionDays, GETDATE () ) ) AS DATE ) AS NVARCHAR (20 )) + ' '' ;' ;
2615
+ EXEC (@StringToExecute);
2616
+
2617
+
2586
2618
END
2587
2619
ELSE IF (SUBSTRING (@OutputTableName, 2 , 2 ) = ' ##' )
2588
2620
BEGIN
@@ -2707,6 +2739,20 @@ BEGIN
2707
2739
+ ' '' , '' ' + CONVERT (NVARCHAR (100 ), @StartSampleTime, 121 ) + ' '' , '
2708
2740
+ ' DatabaseID, FileID, DatabaseName, FileLogicalName, TypeDesc, SizeOnDiskMB, io_stall_read_ms, num_of_reads, bytes_read, io_stall_write_ms, num_of_writes, bytes_written, PhysicalName FROM #FileStats WHERE Pass = 2' ;
2709
2741
EXEC (@StringToExecute);
2742
+
2743
+ /* Delete history older than @OutputTableRetentionDays */
2744
+ SET @StringToExecute = N ' IF EXISTS(SELECT * FROM '
2745
+ + @OutputDatabaseName
2746
+ + ' .INFORMATION_SCHEMA.SCHEMATA WHERE QUOTENAME(SCHEMA_NAME) = '' '
2747
+ + @OutputSchemaName + ' '' ) DELETE '
2748
+ + @OutputDatabaseName + ' .'
2749
+ + @OutputSchemaName + ' .'
2750
+ + @OutputTableNameFileStats
2751
+ + ' WHERE ServerName = '' '
2752
+ + CAST (SERVERPROPERTY (' ServerName' ) AS NVARCHAR (128 ))
2753
+ + ' '' AND CheckDate < '' ' + CAST (CAST ( (DATEADD (DAY , - 1 * @OutputTableRetentionDays, GETDATE () ) ) AS DATE ) AS NVARCHAR (20 )) + ' '' ;' ;
2754
+ EXEC (@StringToExecute);
2755
+
2710
2756
END
2711
2757
ELSE IF (SUBSTRING (@OutputTableNameFileStats, 2 , 2 ) = ' ##' )
2712
2758
BEGIN
@@ -2817,6 +2863,21 @@ BEGIN
2817
2863
+ ' object_name, counter_name, instance_name, cntr_value, cntr_type, value_delta, value_per_second FROM #PerfmonStats WHERE Pass = 2' ;
2818
2864
EXEC (@StringToExecute);
2819
2865
2866
+ /* Delete history older than @OutputTableRetentionDays */
2867
+ SET @StringToExecute = N ' IF EXISTS(SELECT * FROM '
2868
+ + @OutputDatabaseName
2869
+ + ' .INFORMATION_SCHEMA.SCHEMATA WHERE QUOTENAME(SCHEMA_NAME) = '' '
2870
+ + @OutputSchemaName + ' '' ) DELETE '
2871
+ + @OutputDatabaseName + ' .'
2872
+ + @OutputSchemaName + ' .'
2873
+ + @OutputTableNamePerfmonStats
2874
+ + ' WHERE ServerName = '' '
2875
+ + CAST (SERVERPROPERTY (' ServerName' ) AS NVARCHAR (128 ))
2876
+ + ' '' AND CheckDate < '' ' + CAST (CAST ( (DATEADD (DAY , - 1 * @OutputTableRetentionDays, GETDATE () ) ) AS DATE ) AS NVARCHAR (20 )) + ' '' ;' ;
2877
+ EXEC (@StringToExecute);
2878
+
2879
+
2880
+
2820
2881
END
2821
2882
ELSE IF (SUBSTRING (@OutputTableNamePerfmonStats, 2 , 2 ) = ' ##' )
2822
2883
BEGIN
@@ -2948,6 +3009,20 @@ BEGIN
2948
3009
+ ' '' , '' ' + CONVERT (NVARCHAR (100 ), @StartSampleTime, 121 ) + ' '' , '
2949
3010
+ ' wait_type, wait_time_ms, signal_wait_time_ms, waiting_tasks_count FROM #WaitStats WHERE Pass = 2 AND wait_time_ms > 0 AND waiting_tasks_count > 0' ;
2950
3011
EXEC (@StringToExecute);
3012
+
3013
+ /* Delete history older than @OutputTableRetentionDays */
3014
+ SET @StringToExecute = N ' IF EXISTS(SELECT * FROM '
3015
+ + @OutputDatabaseName
3016
+ + ' .INFORMATION_SCHEMA.SCHEMATA WHERE QUOTENAME(SCHEMA_NAME) = '' '
3017
+ + @OutputSchemaName + ' '' ) DELETE '
3018
+ + @OutputDatabaseName + ' .'
3019
+ + @OutputSchemaName + ' .'
3020
+ + @OutputTableNameWaitStats
3021
+ + ' WHERE ServerName = '' '
3022
+ + CAST (SERVERPROPERTY (' ServerName' ) AS NVARCHAR (128 ))
3023
+ + ' '' AND CheckDate < '' ' + CAST (CAST ( (DATEADD (DAY , - 1 * @OutputTableRetentionDays, GETDATE () ) ) AS DATE ) AS NVARCHAR (20 )) + ' '' ;' ;
3024
+ EXEC (@StringToExecute);
3025
+
2951
3026
END
2952
3027
ELSE IF (SUBSTRING (@OutputTableNameWaitStats, 2 , 2 ) = ' ##' )
2953
3028
BEGIN
0 commit comments