create procedure sys.sp_MSproxylogshippingmonitorerror
(
@mode tinyint -- 1 = add, 2 = delete
,@agent_id uniqueidentifier
,@agent_type tinyint -- 0 = backup, 1 = copy, 2 = restore
,@session_id int = NULL -- should not be null when adding
,@sequence_number int = NULL -- should not be null when adding
,@monitor_server sysname
,@database sysname = NULL -- needed for add
,@log_time datetime = NULL
,@log_time_utc datetime = NULL
,@message nvarchar(4000) = NULL
,@source nvarchar(4000) = NULL
,@help_url nvarchar(4000) = NULL
)
with execute as 'dbo'
as
begin
set nocount on
declare @retcode int
,@linkcmd nvarchar(512)
-- should be executed in msdb
if (db_name() != N'msdb')
begin
raiserror (21482, 16, -1, N'sp_MSproxylogshippingmonitorerror', N'msdb')
return 1
end
-- process the monitor record in log_shipping_monitor_error_detail on the monitor server
select @linkcmd = quotename(sys.fn_MSgetlogshippingmoniterlinkname(upper(@monitor_server))) + N'.msdb.sys.sp_processlogshippingmonitorerror'
begin try
exec @retcode = @linkcmd
@mode = @mode
,@agent_id = @agent_id
,@agent_type = @agent_type
,@session_id = @session_id
,@sequence_number = @sequence_number
,@monitor_server = @monitor_server
,@monitor_server_security_mode = 0
,@database = @database
,@log_time = @log_time
,@log_time_utc = @log_time_utc
,@message = @message
,@source = @source
,@help_url = @help_url
end try
begin catch
select @retcode = 1
end catch
if (@retcode != 0 or @@error != 0)
return 1
-- all done
return 0
end