Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE
- @subject_str varchar(300) = QUOTENAME(@@servername) + N' SQL Login Password Reset Notice' + ' ' + CAST(CAST(GETDATE() AS DATE) AS VARCHAR(10)),
- @body_str varchar(4000) = '=================================================',
- @send_email bit = 0
- DECLARE
- @password_days_threshold int = 180,
- @password_days_diff int,
- @cursor_name varchar(50),
- @cursor_password_set datetime2(0),
- @cursor_days_ago int
- DECLARE password_set_cursor CURSOR
- FOR
- SELECT
- name,
- CAST(LOGINPROPERTY(name, 'PasswordLastSetTime') AS DATETIME2(0)) as password_set,
- DATEDIFF(DAY,CAST(LOGINPROPERTY(name, 'PasswordLastSetTime') AS DATETIME2(0)),GETDATE()) as days_ago
- FROM sys.server_principals
- WHERE type_desc = 'SQL_LOGIN'
- AND is_disabled = 0
- OPEN password_set_cursor
- FETCH NEXT FROM password_set_cursor
- INTO @cursor_name, @cursor_password_set, @cursor_days_ago
- WHILE @@FETCH_STATUS = 0
- BEGIN
- SET @password_days_diff = @cursor_days_ago - @password_days_threshold
- IF @password_days_diff >= 0
- BEGIN
- SET @send_email = 1
- 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)
- 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)
- SET @body_str += '================================================='
- PRINT @cursor_name
- END
- FETCH NEXT FROM password_set_cursor
- INTO @cursor_name, @cursor_password_set, @cursor_days_ago
- END
- CLOSE password_set_cursor;
- DEALLOCATE password_set_cursor;
- IF @send_email = 1
- BEGIN
- EXEC msdb.dbo.sp_send_dbmail
- --@recipients = N'bob@email.com',
- @reply_to = N'support@email.com',
- @blind_copy_recipients = N'me@email.com',
- @subject = @subject_str,
- @body = @body_str
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement