SQL Server:連結伺服器中的頻繁登錄超時已過期
我正在使用 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
設置立即生效,無需重啟伺服器。
右鍵點擊伺服器,打開伺服器屬性,導航到連接並確保選中允許遠端連接到此伺服器。
另外,檢查防火牆設置。