2016-11-04 129 views
0

我嘗試了兩種方法來檢查鏈接服務器是否聯機,這同樣很慢。鑑於我必須有可能檢查配置的數百個這樣的鏈接服務器是否實際在線,我正在尋找更快的方式來檢查可用性。不幸的是,ping不是一種選擇,因爲這些服務器可能被防火牆屏蔽,只有數據庫端口被打開。SQL Server很慢檢查鏈接服務器是否在線

Select 1 
Where Exists (Select COUNT(*) 
       From [LINK-RC].[DeltaV_KB].INFORMATION_SCHEMA.TABLES) 

declare @retval bit 
exec @retval = sys.sp_testlinkedserver [LINK-RC]; 
+0

只是在連接過程中連接到服務器會更快還是開銷?根據我的經驗,鏈接服務器非常慢。 –

+0

什麼可以幫助(從未測試過)正在調整[遠程登錄超時](https://msdn.microsoft.com/library/ms175136)(默認值爲10或20秒,具體取決於版本)。當心,很明顯,如果在糟糕的一天發生的事情有點緩慢,將其設置得非常低可能會導致不需要的超時。如果可能的話,嘗試在SQL Server之外執行此操作 - ping可能不起作用,但連接到端口1433以檢查它是否可用任何數量的工具完成,最顯着的是'nmap'(如果您的網絡管理員不拋出在它提到的一個hissy適合)。 –

回答

0

更改您的鏈接服務器的連接超時財產。在幾秒鐘內,用於連接到 鏈接服務器

Linked Server Properties (Server Options Page)

連接超時

超時值。如果爲0,則使用sp_configure defaultremote查詢超時 選項值。

enter image description here

0

請嘗試以下時,可以運行得更快。我猜如果你將你的語句轉換爲Pass-through而不是四部分查詢,那麼運行速度會更快。 另外,您可以刪除數據庫和表名,因爲您只需要與服務器建立連接。

SELECT * FROM OPENQUERY ([LINK-RC], 'SELECT 1') 
+0

試過這個,不幸的是我的系統似乎沒有更快。 – aggaton