USE msdb
GO
DECLARE @servername NVARCHAR(150)
DECLARE @mysubject NVARCHAR(200)
DECLARE @msg NVARCHAR(500)
DECLARE @emailrecipients VARCHAR (350)
DECLARE @profile SYSNAME
SET @profile = (SELECT P.name FROM sysmail_principalprofile (NOLOCK) as PP
INNER JOIN sysmail_profile (NOLOCK) as P ON PP.profile_id = P.profile_id)
SET @servername = @@SERVERNAME
SET @emailrecipients = 'me@test.com'
SET @mysubject = 'URGENT: SQL Server Agent Restarted on ' + @servername + '!!!'
SET @msg = '<H2>SQL Server Agent just started on ' + @servername + '. Please verify database server and check if SQL Server was restarted as well.</H2>'
EXEC msdb.dbo.sp_send_dbmail @recipients = @emailrecipients,
@profile_name = @profile, @subject = @mysubject,
@body = @msg, @body_format = 'HTML',@query_no_truncate = 1
--SELECT * from sysmail_allitems order by send_request_date desc
Job
USE [msdb]
GO
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'Database Maintenance' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'Database Maintenance'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'DBA - SQL Agent Restart Check',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=2,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'Checks for a SQL Server Agent restart and emails DBAs to investigate further.',
@category_name=N'Database Maintenance',
@owner_login_name=N'sa',
@notify_email_operator_name=N'DBA', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Send email when SQL Server Agent starts',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'USE msdb
GO
DECLARE @servername NVARCHAR(150)
DECLARE @mysubject NVARCHAR(200)
DECLARE @msg NVARCHAR(500)
DECLARE @emailrecipients VARCHAR (350)
DECLARE @profile SYSNAME
SET @profile = (SELECT TOP 1 P.name FROM sysmail_principalprofile (NOLOCK) as PP
INNER JOIN sysmail_profile (NOLOCK) as P ON PP.profile_id = P.profile_id)
SET @servername = @@SERVERNAME
SET @emailrecipients = ''me@test.com''
SET @mysubject = ''URGENT: SQL Server Agent Restarted on '' + @servername + ''!!!''
SET @msg = ''<H2>SQL Server Agent just started on '' + @servername + ''. Please verify database server and check if SQL Server was restarted as well.</H2>''
EXEC msdb.dbo.sp_send_dbmail @recipients = @emailrecipients,
@profile_name = @profile, @subject = @mysubject,
@body = @msg, @body_format = ''HTML'',@query_no_truncate = 1
--SELECT * from sysmail_allitems order by send_request_date desc',
@database_name=N'master',
@flags=12
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'At startup',
@enabled=1,
@freq_type=64,
@freq_interval=0,
@freq_subday_type=0,
@freq_subday_interval=0,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20180109,
@active_end_date=99991231,
@active_start_time=0,
@active_end_time=235959,
@schedule_uid=N'114fce8b-c5c3-4301-b18b-2aa9f4a47850'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
Comments