Advertisements
This script will check the Automon linked server status and notify an alert, when it is not running.
SP:
/*
use [DBAdata]
drop table tbl_Linked_Server_Status
go
CREATE TABLE [dbo].[tbl_Linked_Server_Status](
[servername] varchar(200),
error_no bigint,
errors varchar(2000),
Date datetime
)
*/
-- select * from tbl_Linked_Server_Status
use [DBAdata]
go
-- Exec [DBAdata].[dbo].[Usp_Linked_server_Status_Check]
--DROP PROC [Usp_Linked_server_Status_Check]
alter PROCEDURE [dbo].[Usp_Linked_server_Status_Check]
/*
Summary: Check the SQL agent stats
Contact: Muthukkumaran Kaliyamoorhty SQL DBA
Description: Check the SQL agent stats
ChangeLog:
Date Coder Description
2013-jan-21 Muthukkumaran Kaliyamoorhty Updated the 2012 functionality
*/
--WITH ENCRYPTION
AS
BEGIN
SET nocount ON
-- select * from dbadata.dbo.tbl_Linked_Server_Status
Truncate table dbadata.dbo.tbl_Linked_Server_Status
DECLARE @server_name SYSNAME
DECLARE @DESC SYSNAME
--DECLARE @sql varchar(8000)
DECLARE @minrow int
DECLARE @maxrow int
declare @Linked_status table (id int primary key identity, servername varchar(100),Description varchar(100))
insert into @Linked_status
select Servername , Description from dbadata.dbo.dba_all_servers WHERE svr_status ='running'
--select * from dbadata.dbo.dba_all_servers
SELECT @minrow = MIN(id)FROM @Linked_status
SELECT @maxrow = MAX(id) FROM @Linked_status
while (@minrow <=@maxrow)
begin
BEGIN TRY
select @Server_name=Servername from @Linked_status where ID = @minrow
Exec sp_testlinkedserver @server_name;
end try
BEGIN CATCH
insert into tbl_linked_server_status
select @server_name,ERROR_NUMBER(), ERROR_MESSAGE(), Getdate();
END CATCH
set @minrow =@minrow +1
end
----------------------------------------------------------------
--Send an email to DBA team
-----------------------------------------------------------------
DECLARE @minid INT
DECLARE @maxid INT
DECLARE @servername varchar(100)
DECLARE @error_no varchar(100)
DECLARE @errors varchar(100)
DECLARE @date varchar(100)
-- select * from dbadata.dbo.tbl_Linked_Server_Status
if exists (
select 1 from dbadata.dbo.tbl_Linked_Server_Status
)
begin
DECLARE Linked_CUR CURSOR FOR
SELECT *
FROM tbl_Linked_Server_Status
OPEN Linked_CUR
FETCH NEXT FROM Linked_CUR
INTO @servername,@error_no,@errors,@date
DECLARE @BODY1 VARCHAR(max)
SET @BODY1= '<font size=2 color=#C35817 face=''verdana''><B>AutoMon Linked server Status:</b> </font>
<P>
<font size=1 color=#FF00FF face=''verdana''>
<Table border=5 width=1000 bgcolor=#ECE5B6 cellpadding=1 style="color:#7E2217;font-face:verdana;font-size:12px;">
<b> <tr bgcolor=#8A4117 align=center style="color:#FFFFFF;font-weight:bold">
<td width=600 color=white>SERVER</td>
<td width=600 color=white>Error Number</td>
<td width=600 color=white>Error</td>
<td width=600 color=white>Date</td>
</b>
</tr>'
WHILE @@FETCH_STATUS=0
BEGIN
SET @BODY1= @BODY1 +'<tr>
<td>'+ISNULL(@SERVERNAME,' ')+'</td>'+
'<td align=center>'+ISNULL(@error_no,' ')+'</td>'+
'<td align=center>'+ISNULL(@errors,' ')+'</td>'+
'<td align=center>'+ISNULL(@date,' ')+'</td>'
FETCH NEXT FROM Linked_CUR
INTO @servername,@error_no,@errors,@date
END
SET @BODY1=@BODY1+'</Table> </p>
<p>
<font style="color:#7E2217;font-face:verdana;font-size:9px;"> Generated on '
+convert(varchar(30),getdate(),100)+'. </BR>
This is an auto generated mail by DBA team. If you receive this email by mistake please contact us.
</br>
© Property of DBA Team.
</font>'
CLOSE Linked_CUR
DEALLOCATE Linked_CUR
DECLARE @EMAILIDS VARCHAR(500)
SELECT @EMAILIDS=
COALESCE(@EMAILIDS+';','')+EMAIL_ADDRESS FROM dbo.DBA_ALL_OPERATORS
WHERE STATUS=1
DECLARE @EMAILIDS1 VARCHAR(500)
--SELECT @EMAILIDS1= 'abc@xxx.com;xyz@xxx.com'
SELECT @EMAILIDS1= 'dbateam@xxx.com'
EXEC MSDB.DBO.SP_SEND_DBMAIL @RECIPIENTS=@EMAILIDS,
@SUBJECT = 'DBA: AutoMon Linked server Status',
@BODY = @BODY1,
@copy_recipients=@EMAILIDS1,
@BODY_FORMAT = 'HTML' ,@PROFILE_NAME='muthu';
--select @BODY1
-------------------------------------------------------
end
END