Windows 2003 ODBC问题 – 错误10055

使用数据集成器进行ETL从DB2到SQL Server的数据提取,经过一段时间后,会得到这些odbc错误:

通信链接失败。 通信rc = 10055 – CWBCO1003 – 套接字错误,函数返回10055

之后无法用ODBC做任何事情,不得不重新启动这个盒子,现在我们每天晚上在午夜重新启动盒子,以避免这个问题的发生。

试过这个, http://support.microsoft.com/kb/196271但它没有工作,几乎使情况变得更糟。

目前似乎没有解决办法。 没有其他使用ODBC的盒子可以解决我们使用的这个问题。 现在不能重新格式化盒子,遗留的东西。

有没有人看到这个问题,碰到它,修复它,减轻它?

当然,内存不足的情况,可能是由于不closures数据库连接的常见错误造成的。 我的build议是:

  1. 检查进程运行时可用的非页面缓冲池内存量。 在机器出现故障之前,它会稳定下降。 这表示套接字未被closures,或者内核I / O缓冲区未被释放。 (未封闭的套接字更可能)
  2. 通过“net sh winsock catalog> wsockcat.txt”在你的winsock栈中检查一个未知的或外部的分层服务提供者(LSP)。 将输出与其他Windows服务器进行比较。 首先怀疑已经插入到您的堆栈中的源自mswsock.dll以外的任何提供程序。
  3. 如果低非非页面缓冲池是问题,请参阅重新启动应用程序或者DB服务器释放内存。 您可能不使用连接池,因此如果某个数据库访问层将旧连接打开,则“sp who”和“list applications”可能会显示有趣的结果。

如果您确实看到数据库服务器在#3中报告了大量的空闲连接,则可以通过编写脚本来主动closures来自服务器端的未使用连接,从而减轻问题。

这是在黑暗中的一个镜头,但是在这里。

“函数返回10055”是ODBC使用的Windows套接字库WinSock中的一个通用内存不足或资源不足错误。

有没有办法将SQL Serverconfiguration为DB2连接,以便使用命名pipe道而不是TCP / IP? 这将完全绕过WinSock。

手柄泄漏的应用程序本周引起了我的问题。 其中一个症状是“portqry.exe”将返回一个Winsock 10055错误。