Technical Article

SQL Server Admin Role Alert Script

,

The below code will send an email alert when someone is added to the SYSADMIN Role on your SQL Server. You can run daily to keep an eye on it. I left some commented code so you can modify it also.

I have not posted any scripts in a long time, Enjoy!

set nocount on
select Convert(varchar(35),@@servername) as 'Server_Name',
Convert(varchar(25),[name])as 'Name',
Convert(varchar(25),loginname)as 'LoginName',
sysadmin,
--hasaccess,
Convert(varchar(25),dbname) as 'Default_Db',
Createdate=Convert(varchar,createdate,100),
[Updatedate]=Convert(varchar,updatedate,100) from master..syslogins
where sysadmin = '1' and updatedate > Getdate()-1 --and sid != 0x01
--WHERE LOGINPROPERTY([name], 'PasswordLastSetTime') > DATEADD(dd, -7, GETDATE());
If @@rowcount = 0
return
else
Begin 
Print 'Worked'
Declare @srvname varchar(55),@subject1 varchar(255)
Select @srvname = @@servername
DECLARE @xml NVARCHAR(MAX)
DECLARE @body NVARCHAR(MAX)
SET @xml =CAST(( select name AS 'td','',loginname AS 'td','',sysadmin as 'td','', 
dbname AS 'td','',Convert(varchar,createdate,100) AS 'td','',Convert(varchar,updatedate,100) AS 'td'
from master..syslogins
where sysadmin = '1' and updatedate > Getdate()-1 and sid != 0x01
FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))
SET @body ='<html><H1>Changed SQL SA Roles on Server '+ @srvname +'</H1><body bgcolor=white>
<table border="1" style="font-family:Georgia, Garamond, Serif;color:blue;font-style:italic;">
<tr><th>Name</th><th>LoginName</th><th>SysAdminBit</th> 
<th>DefaultDb</th><th>CreateDate</th><th>UpdateDate</th>
</tr>' SET @body = @body + @xml +'</table></body></html>'
Set @subject1 = 'Debug Test SQL Sa Role Account Change Report on ' + @srvname
EXEC msdb.dbo.sp_send_dbmail
@recipients =N'someone@emailaddress.com',
@body = @body,@body_format ='HTML',
@subject = @subject1 ,
@profile_name ='Your_Mail__Profile'

End

Rate

5 (1)

You rated this post out of 5. Change rating

Share

Share

Rate

5 (1)

You rated this post out of 5. Change rating