Advertisement
Guest User

Untitled

a guest
Apr 19th, 2017
546
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. DECLARE
  2. @subject_str varchar(300) = QUOTENAME(@@servername) + N' SQL Login Password Reset Notice' + ' ' + CAST(CAST(GETDATE() AS DATE) AS VARCHAR(10)),
  3. @body_str varchar(4000) = '=================================================',
  4. @send_email bit = 0
  5.  
  6. DECLARE
  7. @password_days_threshold int = 180,
  8. @password_days_diff int,
  9. @cursor_name varchar(50),
  10. @cursor_password_set datetime2(0),
  11. @cursor_days_ago int
  12.  
  13. DECLARE password_set_cursor CURSOR
  14. FOR
  15. SELECT
  16. name,
  17. CAST(LOGINPROPERTY(name, 'PasswordLastSetTime') AS DATETIME2(0)) as password_set,
  18. DATEDIFF(DAY,CAST(LOGINPROPERTY(name, 'PasswordLastSetTime') AS DATETIME2(0)),GETDATE()) as days_ago
  19. FROM sys.server_principals
  20. WHERE type_desc = 'SQL_LOGIN'
  21. AND is_disabled = 0
  22. OPEN password_set_cursor
  23. FETCH NEXT FROM password_set_cursor
  24. INTO @cursor_name, @cursor_password_set, @cursor_days_ago
  25.  
  26. WHILE @@FETCH_STATUS = 0
  27. BEGIN
  28. SET @password_days_diff = @cursor_days_ago - @password_days_threshold
  29. IF @password_days_diff >= 0
  30. BEGIN
  31. SET @send_email = 1
  32. SET @body_str += CHAR(13) + CHAR(10) + 'The password for SQL login ' + QUOTENAME(@cursor_name) + ' on ' + QUOTENAME(@@servername) + ' was last set on ' + CAST(@cursor_password_set AS VARCHAR(20)) + '.' + CHAR(13) + CHAR(10)
  33. SET @body_str += 'This exceeds the threshold of ' + CAST(@password_days_threshold AS VARCHAR(5)) + ' days by ' + CAST(@password_days_diff AS VARCHAR(5)) + '.' + CHAR(13) + CHAR(10)
  34. SET @body_str += '================================================='
  35. PRINT @cursor_name
  36. END
  37.  
  38. FETCH NEXT FROM password_set_cursor
  39. INTO @cursor_name, @cursor_password_set, @cursor_days_ago
  40. END
  41. CLOSE password_set_cursor;
  42. DEALLOCATE password_set_cursor;
  43.  
  44. IF @send_email = 1
  45. BEGIN
  46. EXEC msdb.dbo.sp_send_dbmail
  47. --@recipients = N'bob@email.com',
  48. @reply_to = N'support@email.com',
  49. @blind_copy_recipients = N'me@email.com',
  50. @subject = @subject_str,
  51. @body = @body_str
  52. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement