我經常在使用openquery通過鏈接服務器讀取的存儲過程上收到錯誤。SQL Server鏈接服務器上的資源限制
OLE DB提供程序 「SQLNCLI11」 鏈接服務器 「BrackleyICS」 報告錯誤。執行由供應商終止,因爲已達到資源限制 。
這通常會在10.01分鐘發生。這意味着超時設置,但在其他情況下,它將運行良好,需要35分鐘才能完成。
有沒有人遇到過這個?
我經常在使用openquery通過鏈接服務器讀取的存儲過程上收到錯誤。SQL Server鏈接服務器上的資源限制
OLE DB提供程序 「SQLNCLI11」 鏈接服務器 「BrackleyICS」 報告錯誤。執行由供應商終止,因爲已達到資源限制 。
這通常會在10.01分鐘發生。這意味着超時設置,但在其他情況下,它將運行良好,需要35分鐘才能完成。
有沒有人遇到過這個?
您可以通過檢查你當前超時設置:
查詢超時
右鍵單擊服務器>屬性>連接>遠程查詢超時
登錄超時
右鍵單擊版本>屬性>高級>遠程登錄Timout
我覺得你的登錄超時設置爲10分鐘,你需要30秒,變化值以下運行腳本需要一個
sp_configure 'remote login timeout', 30
go
reconfigure with override
go
原因增加此爲什麼它不是每次都超時: 不確定,但如果用戶ID登錄到服務器,則超時不會發生。
我確實認爲它與此有關,我只是困惑它爲什麼有時超時和其他時間沒有。 因此,服務器A通過OpenQuery連接到服務器B,有時會超時,而其他時間則不會。服務器A也使用OpenQuery連接到服務器C,並且這個過程不會超時,但需要更長的時間。 – Jay1b
@ Jay1b,比較服務器B和服務器C的設置,也許你會發現一些差異 – PawelCz
沒有明顯的設置差異可能會影響這一點。不用說SQL Server是如此之大,我不能說所有的設置都是一樣的。將此超時時間從600更改爲300意味着它將在5分鐘內超時,而不是按預期時間。我試着用這個設定的幾次運行到一個小時(3600),當它偶爾工作時很難確認成功。 – Jay1b
鏈接服務器在鏈接服務器 - >屬性 - >服務器選項中也有自己的查詢超時設置。它很可能被設置爲0 - 這是默認值。
在這種情況下,它使用查詢等待高級服務器設置 - 再次 - 最可能設置爲-1(默認值)。
在這種情況下,每個查詢決定超時,並將其計算爲估計查詢成本的25倍。在MSDN
更多信息也許登錄超時一個時間,不要等時間,這可能會幫助:https://support.microsoft.com/en-ie/help/314530/error-message-when-你執行一個鏈接服務器查詢在SQL服務器超時過期 – PawelCz
採取從上面的鏈接,默認情況下,在Microsoft SQL Server 7.0中,超時設置爲零(0 - 無限等待)。默認情況下,在SQL Server 2000和SQL Server 2005中,超時設置爲600(10分鐘)。 – PawelCz