Share via


T-SQL: Create and Test an Alert

Step1 : create an operator who will receive notifications.

Use msdb
 
Go
 
If Not Exists(Select name From msdb.dbo.sysoperators
 
Where name = N'DBAdministrator')
 
Exec msdb.dbo.sp_add_operator @name=N'DBAdministrator',
 
@enabled=1,
 
@pager_days=0,
 
@email_address=N'account@mailserver.com'
 
Go

-- Step2 :

create an alert that triggers when a lack of resources.

If Not Exists(Select name From msdb.dbo.sysalerts
 
Where name = N'Lack of resources')
 
Exec msdb.dbo.sp_add_alert @name=N'Lack of resources',
 
@message_id=0,
 
@severity=17,
 
@enabled=1,
 
@delay_between_responses=0,
 
@include_event_description_in=1,
 
@job_id=N'00000000-0000-0000-0000-000000000000'
 
Go

-- Step3 :

notify the operator created previously.

If Not Exists(Select notifications.notification_method, alerts.name, operators.name
 From msdb.dbo.sysnotifications as notifications
 
 inner join msdb.dbo.sysalerts as alerts on notifications.alert_id = alerts.id
 
 inner join msdb.dbo.sysoperators as operators on notifications.operator_id = operators.id
 
 Where alerts.name = N'Lack of resources'
 
 and operators.name = N'DBAdministrator'
 
 and  notification_method = 1)
 
 Exec msdb.dbo.sp_add_notification @alert_name=N'Lack of resources',
 
 @operator_name=N'DBAdministrator', @notification_method = 1
 
Go

-- Step 4 :

trigger alert.

Use [DataBase]
 
Go

Do not forget to use (With Log).

RaisError (N'An error occurred Severity 17: insufficient resources ! ', 17, 1)
 
With Log
 
Go

 Step 5 :

check your email. Troubleshooting

If the operator does not receive an e-mail
Test database mail by sending a test e-mail to the operator's e-mail address.
Make sure you restarted SQL Agent and it is running.