2012-04-17 41 views
2

linkedserver的連接我需要編寫一個程序,從多個遠程服務器中收集數據,如何測試在TSQL

我用linkedservers和OPENQUERY來收集來自服務器的數據,但有時我失去連接到某些服務器或者我乾脆無法連接它們(例如遠程服務器處於脫機狀態) - 在這些情況下,OPENQUERY會導致超時。

所以我想先檢查鏈接服務器連接,然後如果它成功運行查詢,如果不是隻移動到下一個遠程服務器。

我試圖把OPENQUERY放在TRY-CATCH中,但它仍然返回了超時錯誤,sp_testlinkedserver過程也返回了超時錯誤。

我非常感謝任何幫助。

回答

12

您可以使用下面的腳本

http://blogs.msdn.com/b/sqltips/archive/2005/06/07/426578.aspx

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); 
+1

+1,因爲這肯定是值得+1 – iWeasel 2013-01-22 12:43:10

+0

這需要如此長的時間了,雖然。無論連接的服務器設置和「連接超時」服務器選項如何,我都至少在40英寸以上。 – Doc 2015-03-06 13:51:24