回答

收藏

如何在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 );
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则