How to test linkedserver's connectivity in TSQL
Asked Answered
Y

2

5

I need to write a procedure to collect data from several remote servers,

I use linkedservers and OPENQUERY to gather data from servers, but sometimes I lose connection to some servers or I simply can't connect them (e.g. remote server is offline)- and OPENQUERY results in time-outs in these cases.

So I wanted to check linkedservers connectivity first and then if it's successful run the query, if not just move on to next the remote server.

I tried to put OPENQUERY in TRY - CATCH but it still returned me time-out error, sp_testlinkedserver procedure also returned me time-out error.

I'd really appreciate any help.

Yonah answered 17/4, 2012 at 12:23 Comment(0)
I
17

You can use below script

https://web.archive.org/web/20190201090243/https://blogs.msdn.microsoft.com/sqltips/2005/06/07/test-linked-server-connection-settings/

declare @srvr nvarchar(128), @retval int;
set @srvr = 'my_linked_srvr';
begin try
    exec @retval = sys.sp_testlinkedserver @srvr;
end try
begin catch
    set @retval = sign(@@error);
end catch;
if @retval <> 0
  raiserror('Unable to connect to server. This operation will be tried later!', 16, 2 );
Impeccant answered 17/4, 2012 at 12:26 Comment(4)
It takes so long to time out though. I'm looking at 40" minimum, whatever the linked server settings and the "connect timeout" server option.Blab
Same behaviour, this code works but takes 47'' even if I have set a connection timeout of 15 seconds on linked server propertiesCowart
learn.microsoft.com/en-us/sql/relational-databases/…Acquit
How could we add a while loop to test connectivity for all the available link servers instead of one variable?Eatables
N
2
USE master;  
GO  
sp_testlinkedserver [LINKED_SERVER_NAME];  
GO 

or

SELECT * FROM OPENQUERY(LINKED_SERVER_NAME , 'select name DATABASE_NAME ,SYS_CONTEXT (''USERENV'', ''SESSION_USER'') USERNAME, host_name from v$database, dual, v$instance') ;
Neomineomycin answered 11/6, 2020 at 10:27 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.