Sql-Server

SQL Server:連結伺服器中的頻繁登錄超時已過期

  • November 5, 2020

我正在使用 SQL Server 2012。我已安排每 1 小時執行一次作業,其中 1 個步驟呼叫 1 個簡單的儲存過程。儲存過程將大約 1K 數據從生產伺服器遷移到我們的本地伺服器。已成功建立連結伺服器。儲存過程中使用的查詢如下所示。

SELECT ID,Col1,Col2,Col3,Col4,Col5 into #temp from [111.111.111.111].ProdServer.dbo.SourceTable

Insert into Localtable(ID,Col1,Col2,Col3,Col4,Col5)
SELECT ID,Col1,Col2,Col3,Col4,Col5
FROM #temp where ID NOT IN (select ID from Localtable)

在此處輸入圖像描述

作業執行有時需要 25-30 秒才能成功執行。有時需要 48-50 秒,這會導致失敗。請參閱下面的失敗消息和上面的螢幕截圖中的其他詳細資訊。

失敗消息:

以使用者身份執行:NT AUTHORITY\NETWORK SERVICE。命名管道提供程序:無法打開到 SQL Server 的連接

$$ 53 $$.$$ SQLSTATE 42000 $$(錯誤 53)連結伺服器“111.111.111.111”的 OLE DB 提供程序“SQLNCLI10”返回消息“登錄超時已過期”。$$ SQLSTATE 01000 $$(錯誤 7412)連結伺服器“111.111.111.111”的 OLE DB 提供程序“SQLNCLI10”返回消息“與 SQL Server 建立連接時發生網路相關或特定於實例的錯誤。找不到或無法訪問伺服器。檢查是否實例名稱是否正確,並且 SQL Server 是否配置為允許遠端連接。有關詳細資訊,請參閱 SQL Server 聯機叢書。"。$$ SQLSTATE 01000 $$(錯誤 7412)。步驟失敗。

更多細節

  • 該表被任何人鎖定,並且沒有對其執行任何查詢。
  • 在連結伺服器屬性中,查詢超時和連接超時都設置為 0。
  • 在伺服器屬性遠端查詢超時也設置為 600 秒。

作為最後一個選項,我嘗試將連接超時設置從其預設值 15 更改為 6000 或更高。我無法實現它。請建議解決方案以成功執行我的預定作業,即使需要 48 分鐘或更長時間。

Right Click on server>>在連接下的左窗格中 -Click on properties查看Click view connection properties``Connection Timeout Property

1 個新觀察: 如果需要48 seconds或更多時間才能執行,則作業失敗。

我在這裡回答我自己的問題。在通過網際網路搜尋進行瞭如此多的觀察和實驗之後,我找到了解決這個問題的方法。您需要執行這個簡單的查詢

USE Yourdatabase;
GO
EXEC sp_configure 'remote query timeout', 0 ;
GO
RECONFIGURE ;
GO

設置立即生效,無需重啟伺服器。

請參閱配置遠端查詢超時伺服器配置選項sp_configure

右鍵點擊伺服器,打開伺服器屬性,導航到連接並確保選中允許遠端連接到此伺服器。

另外,檢查防火牆設置。

引用自:https://dba.stackexchange.com/questions/90925