Skip to content

Commit 927ef76

Browse files
authored
Merge pull request #1233 from BrentOzarULTD/issue_1232/brent
#1232 sp_BlitzFirst add @OutputTableRetentionDays parameter
2 parents b558d60 + 17545ba commit 927ef76

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

sp_BlitzFirst.sql

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ ALTER PROCEDURE [dbo].[sp_BlitzFirst]
1818
@OutputTableNamePerfmonStats NVARCHAR(256) = NULL ,
1919
@OutputTableNameWaitStats NVARCHAR(256) = NULL ,
2020
@OutputTableNameBlitzCache NVARCHAR(256) = NULL ,
21+
@OutputTableRetentionDays TINYINT = 7 ,
2122
@OutputXMLasNVARCHAR TINYINT = 0 ,
2223
@FilterPlansByDatabase VARCHAR(MAX) = NULL ,
2324
@CheckProcedureCache TINYINT = 0 ,
@@ -2502,7 +2503,23 @@ BEGIN
25022503
@CheckDateOverride = @StartSampleTime,
25032504
@MinutesBack = @BlitzCacheMinutesBack,
25042505
@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+
25052521
END
2522+
25062523
ELSE /* No sp_BlitzCache found, or it's outdated */
25072524
BEGIN
25082525
INSERT INTO #BlitzFirstResults
@@ -2583,6 +2600,21 @@ BEGIN
25832600
+ CAST(SERVERPROPERTY('ServerName') AS NVARCHAR(128))
25842601
+ ''', ''' + (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';
25852602
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+
25862618
END
25872619
ELSE IF (SUBSTRING(@OutputTableName, 2, 2) = '##')
25882620
BEGIN
@@ -2707,6 +2739,20 @@ BEGIN
27072739
+ ''', ''' + CONVERT(NVARCHAR(100), @StartSampleTime, 121) + ''', '
27082740
+ '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';
27092741
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+
27102756
END
27112757
ELSE IF (SUBSTRING(@OutputTableNameFileStats, 2, 2) = '##')
27122758
BEGIN
@@ -2817,6 +2863,21 @@ BEGIN
28172863
+ 'object_name, counter_name, instance_name, cntr_value, cntr_type, value_delta, value_per_second FROM #PerfmonStats WHERE Pass = 2';
28182864
EXEC(@StringToExecute);
28192865

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+
28202881
END
28212882
ELSE IF (SUBSTRING(@OutputTableNamePerfmonStats, 2, 2) = '##')
28222883
BEGIN
@@ -2948,6 +3009,20 @@ BEGIN
29483009
+ ''', ''' + CONVERT(NVARCHAR(100), @StartSampleTime, 121) + ''', '
29493010
+ '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';
29503011
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+
29513026
END
29523027
ELSE IF (SUBSTRING(@OutputTableNameWaitStats, 2, 2) = '##')
29533028
BEGIN

0 commit comments

Comments
 (0)