Actions module is responsible for sending notifications and performing different tasks.


Action definition is stored in table [dbo].[sqlwatch_config_action]

Action executable

Executable can either be a command action_exec or a report action_report_id but not both. The action_exec expects optional parameters {SUBJECT} and {BODY} which are defined by the template.
If action triggers a report, the content of the report will be embedded in the {BODY} and action associated with the given report called instead:
check -> action -> report -> action
This way we can also call stand alone reports that are not triggered by checks, for example daily or weekly Server overview report or even business reports.
Actions are executed by a PowerShell step in the SQL Server agent job and there are currently two types supported T-SQL and PowerShell which are invoked by either by Invoke-SqlCmd or Invoke-Expression


Actions support templates. For example, we may want a short description in the Pushover notification and more details in an email notification.
Templates are defined in [dbo].[sqlwatch_config_check_action_template]. Each status (OK, WARNING and CRITICAL) has its own subject and body templates which generate {SUBJECT} and {BODY} content required by the action_exec
To make it easier to build custom templates, a number of variables have been exposed for the end user:
Status of the check (OK,WARNING,CRITICAL)
Name of the check
ID of the check
Description of the check
Query executed by the check
Value returned by the check
Value returned by the previous check. Useful for context.
Status of the previous check.
Date Time when last status change has occurred.
Date Time of the current check
Value of the warning threshold
Value of the critical threshold
For example, if we have a simple check that does not call a report, the following plain text template:
Check: {CHECK_NAME} ( CheckId: {CHECK_ID} )
Current status: {CHECK_STATUS}
Current value: {CHECK_VALUE}
Previous value: {CHECK_LAST_VALUE}
Previous status: {CHECK_LAST_STATUS}
Previous change: {LAST_STATUS_CHANGE}
SQL instance: {SQL_INSTANCE}
Alert time: {CHECK_TIME}
Warning threshold: {THRESHOLD_WARNING}
Critical threshold: {THRESHOLD_CRITICAL}
--- Check Description:
--- Check Query:
Sent from SQLWATCH on host: {SQL_INSTANCE}
Will result in the following content:
In addition, actions that trigger reports have these variables exposed:
Report title
Report description
Report content (output from the report execution in HTML)
For example, if we have a check that calls Disk Utilisation Report, the following action template (note the HTML tags and the Report Content section):
<p>Check: {CHECK_NAME} ( CheckId: {CHECK_ID} )</p>
<p>Current status: {CHECK_STATUS}
<br>Current value: {CHECK_VALUE}</p>
<p>Previous value: {CHECK_LAST_VALUE}
<br>Previous status: {CHECK_LAST_STATUS}
<br>Previous change: {LAST_STATUS_CHANGE}</p>
<p>SQL instance: {SQL_INSTANCE}
<br>Alert time: {CHECK_TIME}</p>
<p>Warning threshold: {THRESHOLD_WARNING}
<br>Critical threshold: {THRESHOLD_CRITICAL}</p>
<p>--- Check Description:</p>
<p>--- Check Query:</p>
<p><pre style="background:#E0E0E0;padding:5px;"><code>{CHECK_QUERY}</code></pre></p>
<p>--- Report Content:</p></p>
<p>Sent from SQLWATCH on host: {SQL_INSTANCE}</p>
<p><a href=""></a> </p>
Will generate the following report:


Each action's attributes are defined for each in the association table [dbo].[sqlwatch_config_check_action] and can differ for each combination of check and action
Tells whether to notify about subsequent failures or just the first occurrence. When set to FALSE the action will only trigger on the first occurrence of the check going from OK to non OK status.
When set to TRUE the action will trigger every time the check returns a non OK status.
Tells whether to trigger an action when the check recovers from non OK status to OK. This could be handy if we want to be notified that the problem has been resolved.
Number of minutes to repeat action. Only applies when the "action_every_failure" is set to FALSE and will send a repeat notification every x minutes. This is handy if we want to be repeated daily or hourly about alerts that do not require urgent attention, for example low disk alert.
Maximum number of actions that can be triggered per hour to avoid flooding.
ID of the action template
Last modified 4yr ago