|
225 | 225 | /* End of declarations for First Responder Kit consistency check:*/ |
226 | 226 | ; |
227 | 227 |
|
| 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 | + |
228 | 238 | /*Starting permissions checks here, but only if we're not a sysadmin*/ |
229 | 239 | IF |
230 | 240 | ( |
|
297 | 307 | SET @SkipXPCMDShell = 1; |
298 | 308 | END; /*Need execute on xp_cmdshell*/ |
299 | 309 |
|
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*/ |
310 | 327 |
|
311 | 328 | IF ISNULL(@SkipModel, 0) != 1 /*If @SkipModel hasn't been set to 1 by the caller*/ |
312 | 329 | BEGIN |
|
588 | 605 | FROM (VALUES(NULL, 2301, NULL)) AS v (DatabaseName, CheckID, ServerName) /*sp_validatelogins*/ |
589 | 606 | WHERE @SkipValidateLogins = 1 |
590 | 607 |
|
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 | | - |
601 | 608 | IF @SkipChecksTable IS NOT NULL |
602 | 609 | AND @SkipChecksSchema IS NOT NULL |
603 | 610 | AND @SkipChecksDatabase IS NOT NULL |
|
1730 | 1737 |
|
1731 | 1738 | IF @Debug IN (1, 2) RAISERROR('Running CheckId [%d].', 0, 1, 2301) WITH NOWAIT; |
1732 | 1739 |
|
1733 | | - INSERT INTO #InvalidLogins |
1734 | | - EXEC sp_validatelogins |
1735 | | - ; |
| 1740 | + /* |
| 1741 | + #InvalidLogins is filled at the start during the permissions check |
| 1742 | + */ |
1736 | 1743 |
|
1737 | 1744 | INSERT INTO #BlitzResults |
1738 | 1745 | ( CheckID , |
|
0 commit comments