Windows-Server-2003

Windows 2003 ODBC 問題 - 錯誤 10055

  • August 7, 2010

使用數據集成器進行ETL從DB2拉取數據到SQL Server,一段時間後,會得到這些odbc錯誤:

通信鏈路故障。comm rc=10055 - CWBCO1003 - 套接字錯誤,函式返回 10055

在那之後不能用 ODBC 做任何事情,必須重新啟動盒子,目前我們只是在每晚午夜重新啟動盒子,以避免發生問題。

試過這個,http://support.microsoft.com/kb/196271 但它沒有用,幾乎讓它變得更糟。

似乎沒有解決方案。沒有其他使用 ODBC 的盒子遇到我們使用的這個問題。目前無法重新格式化盒子,上面有舊東西。

有沒有人看到這個問題,遇到它,修復它,緩解它?

當然是記憶體不足的情況,可能是由於不關閉數據庫連接的極其常見的錯誤造成的。我的建議是:

  1. 檢查程序執行時可用的非分頁池記憶體量。很可能它會穩步下降,直到機器出現故障。這表明套接字沒有被關閉或核心 I/O 緩衝區沒有被釋放。(未關閉的套接字更有可能)
  2. 通過“net sh winsock catalog > wsockcat.txt”檢查您的 winsock 堆棧中的未知或外部分層服務提供程序 (LSP)。將輸出與您的其他 Windows 伺服器進行比較。首先懷疑已插入您的堆棧中源自 mswsock.dll 之外的任何提供程序。
  3. 如果低非分頁池是問題,請查看是否重新啟動應用程序或任一數據庫伺服器釋放記憶體。您可能沒有使用連接池,因此如果某些 DB 訪問層打開舊連接,“sp who”和“list applications”可能會顯示有趣的結果。

如果您確實在 #3 中看到 DB 伺服器報告大量空閒連接,您可以通過編寫腳本主動關閉來自套接字伺服器端的未使用連接來緩解問題。

引用自:https://serverfault.com/questions/1772