create procedure usp_send_replication_alerts as begin set nocount on declare @subscriber_ip_address varchar(1000) declare @subscriber_ip_name varchar(1000) declare @alerterrormessage varchar(1000) declare @alerterrormessagecount int declare @general_name varchar(100) declare @i int declare @max_count int declare @subscribername varchar(1000) declare @patindexname int declare @count int declare @final_subscriber_name varchar(1000) declare @left_subscriber_name varchar(100) declare @alert_message_patindexname int declare @count_alert_message int declare @left_alert_error_message varchar(1000) declare @length_alert_message int declare @final_count int declare @time datetime declare @j int declare @mail_body varchar(1000) declare @mail_subject varchar(1000) declare @message varchar(1000)   create table #replicationalerts ( replication_alert_id int, [time] datetime, subscriber varchar(100), alert_error_message varchar(1000) ) create table #subscriber_alert_message ( subscriber_name varchar(1000), general_name varchar(100), [time] datetime, alert_message varchar(1000) ) insert #replicationalerts select row_number() over(order by alert_id),[time],subscriber,alert_error_text from sysreplicationalerts where datepart(yyyy,[time]) = datepart(yyyy,getdate()) and datepart(mm,[time]) = datepart(mm,getdate()) and datepart(dd,[time]) = datepart(dd,getdate()) set @i = 1 select @max_count = max(replication_alert_id) from #replicationalerts while(@i<=@max_count) begin select @subscribername=subscriber from #replicationalerts where replication_alert_id = @i select @patindexname=patindex('%\%',@subscribername) select @count = @patindexname-1 select @left_subscriber_name = left(@subscribername,@count) from #replicationalerts select @alerterrormessage = alert_error_message from #replicationalerts where replication_alert_id = @i select @alert_message_patindexname = patindex('%.%',@alerterrormessage) select @count_alert_message = @alert_message_patindexname -1 select @length_alert_message = len(alert_error_message) from #replicationalerts where replication_alert_id = @i select @final_count = @length_alert_message-@count_alert_message select @left_alert_error_message = right(@alerterrormessage,@final_count-1) from #replicationalerts select @time = [time] from #replicationalerts where replication_alert_id = @i insert #subscriber_alert_message select @left_subscriber_name,NULL,@time,@left_alert_error_message update #subscriber_alert_message set general_name = a.general_name from notification_plants a inner join #subscriber_alert_message b on a.plant_server_name = b.subscriber_name set @i = @i+1 end create table #alert_message ( row_id int, subscriber_name varchar(1000), general_name varchar(1000), alert_message varchar(1000) ) insert #alert_message select rank() over(order by subscriber_name,alert_message), subscriber_name, general_name, alert_message from #subscriber_alert_message where datediff(mi,[time],getdate())<=60 set @j =1 select @max_count = max(row_id) from #alert_message while(@j<=@max_count) begin select @mail_subject = general_name+space(1)+'Replication Has Failed' from #alert_message where row_id = @j select @message = alert_message from #alert_message where row_id = @j select @mail_body = ' Hi Team,

The reason for failure is:

'+convert(varchar(100),@message)+'

Regards,
BCP Administrator ' exec msdb..sp_send_dbmail @profile_name = 'Profile Name' ,@recipients ='Email Address' ,@subject = @mail_subject ,@body = @mail_body ,@body_format = 'HTML' ,@importance = 'High' set @j = @j+1 end drop table #alert_message drop table #replicationalerts drop table #subscriber_alert_message end