Skip to content

Commit 5540f42

Browse files
authored
Merge pull request #3359 from Montro1981/SQL-Server-First-Responder-Kit_3356_sp_validatelogins
#3356 Fix for sp_validatelogins
2 parents f5870cb + 4f4cc3d commit 5540f42

1 file changed

Lines changed: 30 additions & 23 deletions

File tree

sp_Blitz.sql

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,16 @@ AS
225225
/* End of declarations for First Responder Kit consistency check:*/
226226
;
227227

228+
/* Create temp table for check 2301 */
229+
IF OBJECT_ID('tempdb..#InvalidLogins') IS NOT NULL
230+
EXEC sp_executesql N'DROP TABLE #InvalidLogins;';
231+
232+
CREATE TABLE #InvalidLogins
233+
(
234+
LoginSID varbinary(85),
235+
LoginName VARCHAR(256)
236+
);
237+
228238
/*Starting permissions checks here, but only if we're not a sysadmin*/
229239
IF
230240
(
@@ -297,16 +307,23 @@ AS
297307
SET @SkipXPCMDShell = 1;
298308
END; /*Need execute on xp_cmdshell*/
299309

300-
IF NOT EXISTS
301-
(
302-
SELECT
303-
1/0
304-
FROM fn_my_permissions(N'sp_validatelogins', N'OBJECT') AS fmp
305-
WHERE fmp.permission_name = N'EXECUTE'
306-
)
307-
BEGIN
308-
SET @SkipValidateLogins = 1;
309-
END; /*Need execute on sp_validatelogins*/
310+
IF ISNULL(@SkipValidateLogins, 0) != 1 /*If @SkipValidateLogins hasn't been set to 1 by the caller*/
311+
BEGIN
312+
BEGIN TRY
313+
/* Try to fill the table for check 2301 */
314+
INSERT INTO #InvalidLogins
315+
(
316+
[LoginSID]
317+
,[LoginName]
318+
)
319+
EXEC sp_validatelogins;
320+
321+
SET @SkipValidateLogins = 0; /*We can execute sp_validatelogins*/
322+
END TRY
323+
BEGIN CATCH
324+
SET @SkipValidateLogins = 1; /*We have don't have execute rights or sp_validatelogins throws an error so skip it*/
325+
END CATCH;
326+
END; /*Need execute on sp_validatelogins*/
310327

311328
IF ISNULL(@SkipModel, 0) != 1 /*If @SkipModel hasn't been set to 1 by the caller*/
312329
BEGIN
@@ -588,16 +605,6 @@ AS
588605
FROM (VALUES(NULL, 2301, NULL)) AS v (DatabaseName, CheckID, ServerName) /*sp_validatelogins*/
589606
WHERE @SkipValidateLogins = 1
590607

591-
IF(OBJECT_ID('tempdb..#InvalidLogins') IS NOT NULL)
592-
BEGIN
593-
EXEC sp_executesql N'DROP TABLE #InvalidLogins;';
594-
END;
595-
596-
CREATE TABLE #InvalidLogins (
597-
LoginSID varbinary(85),
598-
LoginName VARCHAR(256)
599-
);
600-
601608
IF @SkipChecksTable IS NOT NULL
602609
AND @SkipChecksSchema IS NOT NULL
603610
AND @SkipChecksDatabase IS NOT NULL
@@ -1730,9 +1737,9 @@ AS
17301737

17311738
IF @Debug IN (1, 2) RAISERROR('Running CheckId [%d].', 0, 1, 2301) WITH NOWAIT;
17321739

1733-
INSERT INTO #InvalidLogins
1734-
EXEC sp_validatelogins
1735-
;
1740+
/*
1741+
#InvalidLogins is filled at the start during the permissions check
1742+
*/
17361743

17371744
INSERT INTO #BlitzResults
17381745
( CheckID ,

0 commit comments

Comments
 (0)