This script helps in monitoring logshipping status of secondary databases and how far behind they are their respective primaries.
You can have this run as a scheduled job to monitor the "Minutes_Behind_Primary" parameter.
This script helps in monitoring logshipping status of secondary databases and how far behind they are their respective primaries.
You can have this run as a scheduled job to monitor the "Minutes_Behind_Primary" parameter.
/*Creat temporary table to hold the values */IF OBJECT_ID('TEMPDB.dbo.#Logshipping_Monitor') IS NOT NULL
DROP TABLE #Logshipping_Monitor
CREATE TABLE #Logshipping_Monitor
(Primary_Servernvarchar(100),
Primary_Databasenvarchar(100),
Secondary_Servernvarchar(100),
Secondary_Databasenvarchar(100),
Restore_Latencyint,
Min_Behind_Primaryint
)
/* Insert temp table with values */INSERT INTO #Logshipping_Monitor
SELECTsecondary_server, secondary_database, primary_server, primary_database,
last_restored_latency,
DATEDIFF(minute, last_restored_date_utc, GETUTCDATE()) + last_restored_latency [Minutes Behind Current Time]
FROMmsdb.dbo.log_shipping_monitor_secondary
ORDER BY [Minutes Behind Current Time] desc
/*Send email alert only if Secondary is behind Primary by 60min */
--Set the body of the email
DECLARE @xml nvarchar(max)
DECLARE @body nvarchar(Max)
SET @xml = CAST((SELECT[Primary_Server] AS 'td','', [Primary_Database] AS 'td','', [Secondary_Server] AS 'td','', [Secondary_Database] AS 'td','',
[Restore_Latency] AS 'td','',
Min_Behind_Primary AS 'td'
FROM#Logshipping_Monitor
WHEREMin_Behind_Primary > 60
ORDER BY [Min_Behind_Primary] Desc
FOR XML PATH('tr'), ELEMENTS) AS NVARCHAR(MAX))
SET @body = '<html><body><H3>Logshipping Report</H3>
<table border = 1>
<tr>
<th>Primary_Server</th>
<th>Primary_Database</th>
<th>Secondary_Server</th>
<th>Secondary_Database</th>
<th>Latency_Min</th>
<th>Min_Behind_Primary</th>'
SET @body = @body + @xml +'</table></body></html>'
--Send email
EXEC msdb.dbo.sp_send_dbmail
@profile_name = '<DatabaseMailProfile>',
@Subject = 'Logshipping Monitoring',
@recipients = 'Recipient Emails',
@body = @body,
@body_format = 'HTML'
DROP TABLE #Logshipping_Monitor