如何在TSQL中测试LinkedServer的连接性
技术问答
241 人阅读
|
0 人回复
|
2023-09-14
|
从多个远程服务器中收集数据需要编写一个过程,
4 x- }' Z: R! K W+ x6 X1 e2 H我使用链接服务器和OPENQUERY从服务器中收集数据,但有时我失去了与某些服务器的连接,或者我根本无法连接它们(例如,远程服务器处于脱机状态),OPENQUERY导致超时。: j8 ?; U) s& h. K2 c7 j9 [
因此,我想先检查链接服务器的连接性,后检查它是否成功运行(如果不仅仅是下一个远程服务器)。1 ?& t( X1 q9 Q& X9 d) `
我试图将OPENQUERY放入TRY-CATCH,但它还是回到了我的超时错误,sp_testlinkedserver这个过程也回到了我的加班错误。
/ P0 [$ l9 M! v% J5 ~1 H9 e# {: z& [非常感谢您的帮助。
+ a e. Y2 t; l7 w: { [' [8 `
% |; {/ w+ f! K: e2 ] 解决方案: * ~: ~9 v$ y# `8 w/ W$ V
您可以使用以下脚本7 j* `" C! i- U% t& p: K) h, \
https://web.archive.org/web/20190201090243/https://blogs.msdn.microsoft.com/sqltips/2005/06/07/test-
4 J$ w% }8 V- J# [3 C& slinked-server-connection-
: Z0 Y% \( j% j+ lsettings/! C3 r; \$ y/ m
declare @srvr nvarchar(128),@retval int;set @srvr = 'my_linked_srvr';begin try exec @retval = sys.sp_testlinkedserver @srvr;end trybegin catch set @retval = sign(@@error);end catch;if @retval 0 raiserror('Unable to connect to server. This operation will be tried later!`,16,2 ); |
|
|
|
|
|