Files
sql-scripts/TPDT-268 - ACP in task sequence/dba_alerts/Replications.sql
2024-03-07 16:52:14 +01:00

438 lines
23 KiB
Transact-SQL

USE [msdb];
GO
IF NOT EXISTS (SELECT 1 FROM master.cfg.InstanceContext WHERE Business IN ('TPPHAR','TPCENT'))
BEGIN
IF EXISTS (SELECT 1 FROM sys.databases WHERE name = 'distribution')
BEGIN
DECLARE @OperatorName sysname,
@AlertName sysname;
SET @OperatorName = N'DBA_operator';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysoperators
WHERE name = @OperatorName)
EXEC msdb.dbo.sp_add_operator @name = @OperatorName,
@enabled = 1,
@weekday_pager_start_time = 90000,
@weekday_pager_end_time = 180000,
@saturday_pager_start_time = 90000,
@saturday_pager_end_time = 180000,
@sunday_pager_start_time = 90000,
@sunday_pager_end_time = 180000,
@pager_days = 0,
@email_address = N'Gal_SE_DBA@galenica.com',
@category_name = N'[Uncategorized]';
SET @AlertName = 'Replication Warning: Transactional replication latency (Threshold: latency)';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 14161,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication Warning: Subscription expiration (Threshold: expiration)';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 14160,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication Warning: Slow merge over LAN connection (Threshold: mergefastrunspeed)';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 14164,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication Warning: Slow merge over dialup connection (Threshold: mergeslowrunspeed)';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 14165,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication Warning: Long merge over LAN connection (Threshold: mergefastrunduration)';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 14162,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication Warning: Long merge over dialup connection (Threshold: mergeslowrunduration)';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 14163,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication: agent custom shutdown';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 20578,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication: agent failure';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 14151,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication: agent retry';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 14152,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication: agent success';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 14150,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication: expired subscription dropped';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 14157,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication: Subscriber has failed data validation';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 20574,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication: Subscriber has passed data validation';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 20575,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
SET @AlertName = 'Replication: Subscription reinitialized after validation failure';
IF EXISTS ( SELECT name
FROM msdb.dbo.sysalerts
WHERE ( name = @AlertName
AND enabled = 0)
OR ( name = @AlertName
AND has_notification = 0))
EXEC msdb.dbo.sp_delete_alert @name = @AlertName;
IF NOT EXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = @AlertName)
EXEC msdb.dbo.sp_add_alert @name = @AlertName,
@message_id = 20572,
@severity = 0,
@enabled = 1,
@delay_between_responses = 3600,
@include_event_description_in = 5,
@category_name = N'Replication',
@job_id = N'00000000-0000-0000-0000-000000000000';
IF NOT EXISTS ( SELECT name
FROM msdb.dbo.sysalerts AS sa
INNER JOIN msdb.dbo.sysnotifications AS sn
ON sa.id = sn.alert_id
WHERE sa.name = @AlertName)
EXEC msdb.dbo.sp_add_notification @alert_name = @AlertName,
@operator_name = @OperatorName,
@notification_method = 1;
END;
END;
GO