Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 40e46f6

Browse files
BrentOzarULTD#1175 sp_BlitzFirst add LogMessage functionality
Closes BrentOzarULTD#1175.
1 parent 86bfe1f commit 40e46f6

File tree

2 files changed

+40
-37
lines changed

2 files changed

+40
-37
lines changed

‎Documentation/sp_BlitzFirst Checks by Priority.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ If you want to change anything about a check - the priority, finding, URL, or ID
1010
|----------|---------------------------------|---------------------------------------|-------------------------------------------------|----------|
1111
| 0 | Outdated sp_BlitzFirst | sp_BlitzFirst is Over 6 Months Old | http://FirstResponderKit.org/ | 27 |
1212
| 0 | Outdated or Missing sp_BlitzCache | Update Your sp_BlitzCache | http://FirstResponderKit.org/ | 36 |
13+
| 1 | Logged Message | Logged from sp_BlitzFirst | http://FirstResponderKit.org | 38 |
1314
| 1 | Maintenance Tasks Running | Backup Running | https://BrentOzar.com/askbrent/backups | 1 |
1415
| 1 | Maintenance Tasks Running | DBCC CHECK* Running | https://BrentOzar.com/askbrent/dbcc | 2 |
1516
| 1 | Maintenance Tasks Running | Restore Running | https://BrentOzar.com/askbrent/backups | 3 |

‎sp_BlitzFirst.sql‎

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ GO
44

55

66
ALTER PROCEDURE [dbo].[sp_BlitzFirst]
7-
@Question NVARCHAR(MAX) = NULL ,
7+
@LogMessage NVARCHAR(4000) = NULL ,
88
@Help TINYINT = 0 ,
99
@AsOf DATETIMEOFFSET = NULL ,
1010
@ExpertMode TINYINT = 0 ,
@@ -24,6 +24,12 @@ ALTER PROCEDURE [dbo].[sp_BlitzFirst]
2424
@FileLatencyThresholdMS INT = 100 ,
2525
@SinceStartup TINYINT = 0 ,
2626
@ShowSleepingSPIDs TINYINT = 0 ,
27+
@LogMessageCheckID INT = 38,
28+
@LogMessagePriority TINYINT = 1,
29+
@LogMessageFindingsGroup VARCHAR(50) = 'Logged Message',
30+
@LogMessageFinding VARCHAR(200) = 'Logged from sp_BlitzFirst',
31+
@LogMessageURL VARCHAR(200) = '',
32+
@LogMessageCheckDate DATETIMEOFFSET = NULL,
2733
@Debug BIT = 0,
2834
@VersionDate DATETIME = NULL OUTPUT
2935
WITH EXECUTE AS CALLER, RECOMPILE
@@ -137,6 +143,34 @@ SELECT
137143
@FinishSampleTimeWaitFor = DATEADD(ss, @Seconds, GETDATE()),
138144
@OurSessionID = @@SPID;
139145

146+
IF @LogMessage IS NOT NULL
147+
BEGIN
148+
IF @OutputDatabaseName IS NULL OR @OutputSchemaName IS NULL OR @OutputTableName IS NULL
149+
OR NOT EXISTS ( SELECT *
150+
FROM sys.databases
151+
WHERE QUOTENAME([name]) = @OutputDatabaseName)
152+
BEGIN
153+
RAISERROR('We have a hard time logging a message without a valid @OutputDatabaseName, @OutputSchemaName, and @OutputTableName to log it to.', 0, 1) WITH NOWAIT;
154+
RETURN;
155+
END
156+
IF @LogMessageCheckDate IS NULL
157+
SET @LogMessageCheckDate = SYSDATETIMEOFFSET();
158+
SET @StringToExecute = N' IF EXISTS(SELECT * FROM '
159+
+ @OutputDatabaseName
160+
+ '.INFORMATION_SCHEMA.SCHEMATA WHERE QUOTENAME(SCHEMA_NAME) = '''
161+
+ @OutputSchemaName + ''') INSERT '
162+
+ @OutputDatabaseName + '.'
163+
+ @OutputSchemaName + '.'
164+
+ @OutputTableName
165+
+ ' (ServerName, CheckDate, CheckID, Priority, FindingsGroup, Finding, Details, URL) VALUES( '''
166+
+ CAST(SERVERPROPERTY('ServerName') AS NVARCHAR(128))
167+
+ ''', ''' + CONVERT(NVARCHAR(100), @LogMessageCheckDate, 121) + ''', @LogMessageCheckID, @LogMessagePriority, @LogMessageFindingsGroup, @LogMessageFinding, @LogMessage, @LogMessageURL)'
168+
169+
EXECUTE sp_executesql @StringToExecute,
170+
N'@LogMessageCheckID INT, @LogMessagePriority TINYINT, @LogMessageFindingsGroup VARCHAR(50), @LogMessageFinding VARCHAR(200), @LogMessage NVARCHAR(4000), @LogMessageCheckDate DATETIMEOFFSET, @LogMessageURL VARCHAR(200)',
171+
@LogMessageCheckID, @LogMessagePriority, @LogMessageFindingsGroup, @LogMessageFinding, @LogMessage, @LogMessageCheckDate, @LogMessageURL;
172+
RETURN;
173+
END
140174

141175
IF @SinceStartup = 1
142176
SELECT @Seconds = 0, @ExpertMode = 1;
@@ -178,7 +212,7 @@ BEGIN
178212

179213

180214
END /* IF @AsOf IS NOT NULL AND @OutputDatabaseName IS NOT NULL AND @OutputSchemaName IS NOT NULL AND @OutputTableName IS NOT NULL */
181-
ELSE IF @Question IS NULL /* IF @OutputType = 'SCHEMA' */
215+
ELSE IF @LogMessage IS NULL /* IF @OutputType = 'SCHEMA' */
182216
BEGIN
183217
/* What's running right now? This is the first and last result set. */
184218
IF @SinceStartup = 0 AND @Seconds > 0 AND @ExpertMode = 1
@@ -2413,14 +2447,14 @@ BEGIN
24132447
INNER JOIN sys.parameters pCDO ON o.object_id = pCDO.object_id AND pCDO.name = '@CheckDateOverride'
24142448
WHERE o.name = 'sp_BlitzCache')
24152449
BEGIN
2416-
/* Get the most recent sp_BlitzFirst execution before this one */
2450+
/* Get the most recent sp_BlitzCache execution before this one - don't use sp_BlitzFirst because user logs are added in there at any time */
24172451
SET @StringToExecute = N' IF EXISTS(SELECT * FROM '
24182452
+ @OutputDatabaseName
24192453
+ '.INFORMATION_SCHEMA.SCHEMATA WHERE QUOTENAME(SCHEMA_NAME) = '''
24202454
+ @OutputSchemaName + ''') SELECT TOP 1 @BlitzCacheMinutesBack = DATEDIFF(MI,CheckDate,SYSDATETIMEOFFSET()) FROM '
24212455
+ @OutputDatabaseName + '.'
24222456
+ @OutputSchemaName + '.'
2423-
+ @OutputTableName
2457+
+ @OutputTableNameBlitzCache
24242458
+ ' WHERE ServerName = ''' + CAST(SERVERPROPERTY('ServerName') AS NVARCHAR(128)) + ''' ORDER BY CheckDate DESC;';
24252459
EXEC sp_executesql @StringToExecute, N'@BlitzCacheMinutesBack INT OUTPUT', @BlitzCacheMinutesBack OUTPUT;
24262460

@@ -3302,39 +3336,7 @@ IF @SinceStartup = 0 AND @Seconds > 0 AND @ExpertMode = 1
33023336
END
33033337
END /* IF @SinceStartup = 0 AND @Seconds > 0 AND @ExpertMode = 1 - What's running right now? This is the first and last result set. */
33043338

3305-
END /* IF @Question IS NULL */
3306-
ELSE IF @Question IS NOT NULL
3307-
3308-
/* We're playing Magic SQL 8 Ball, so give them an answer. */
3309-
BEGIN
3310-
IF OBJECT_ID('tempdb..#BlitzFirstAnswers') IS NOT NULL
3311-
DROP TABLE #BlitzFirstAnswers;
3312-
CREATE TABLE #BlitzFirstAnswers(Answer VARCHAR(200) NOT NULL);
3313-
INSERT INTO #BlitzFirstAnswers VALUES ('It sounds like a SAN problem.');
3314-
INSERT INTO #BlitzFirstAnswers VALUES ('You know what you need? Bacon.');
3315-
INSERT INTO #BlitzFirstAnswers VALUES ('Talk to the developers about that.');
3316-
INSERT INTO #BlitzFirstAnswers VALUES ('Let''s post that on StackOverflow.com and find out.');
3317-
INSERT INTO #BlitzFirstAnswers VALUES ('Have you tried adding an index?');
3318-
INSERT INTO #BlitzFirstAnswers VALUES ('Have you tried dropping an index?');
3319-
INSERT INTO #BlitzFirstAnswers VALUES ('You can''t prove anything.');
3320-
INSERT INTO #BlitzFirstAnswers VALUES ('Please phrase the question in the form of an answer.');
3321-
INSERT INTO #BlitzFirstAnswers VALUES ('Outlook not so good. Access even worse.');
3322-
INSERT INTO #BlitzFirstAnswers VALUES ('Did you try asking the rubber duck? http://www.codinghorror.com/blog/2012/03/rubber-duck-problem-solving.html');
3323-
INSERT INTO #BlitzFirstAnswers VALUES ('Oooo, I read about that once.');
3324-
INSERT INTO #BlitzFirstAnswers VALUES ('I feel your pain.');
3325-
INSERT INTO #BlitzFirstAnswers VALUES ('http://LMGTFY.com');
3326-
INSERT INTO #BlitzFirstAnswers VALUES ('No comprende Ingles, senor.');
3327-
INSERT INTO #BlitzFirstAnswers VALUES ('I don''t have that problem on my Mac.');
3328-
INSERT INTO #BlitzFirstAnswers VALUES ('Is Priority Boost on?');
3329-
INSERT INTO #BlitzFirstAnswers VALUES ('Have you tried rebooting your machine?');
3330-
INSERT INTO #BlitzFirstAnswers VALUES ('Try defragging your cursors.');
3331-
INSERT INTO #BlitzFirstAnswers VALUES ('Why are you wearing that? Do you have a job interview later or something?');
3332-
INSERT INTO #BlitzFirstAnswers VALUES ('I''m ashamed that you don''t know the answer to that question.');
3333-
INSERT INTO #BlitzFirstAnswers VALUES ('Duh, Debra.');
3334-
INSERT INTO #BlitzFirstAnswers VALUES ('Have you tried restoring TempDB?');
3335-
SELECT TOP 1 Answer FROM #BlitzFirstAnswers ORDER BY NEWID();
3336-
END
3337-
3339+
END /* IF @LogMessage IS NULL */
33383340
END /* ELSE IF @OutputType = 'SCHEMA' */
33393341

33403342
SET NOCOUNT OFF;

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /