web-dev-qa-db-ja.com

Windows 2003 ODBC問題-エラー10055

ETLがDB2からSQLServerにデータをプルするためにデータインテグレーターを使用すると、しばらくすると、次のodbcエラーが発生します。

通信リンク障害。 comm rc = 10055-CWBCO1003-ソケットエラー、関数が10055を返しました

その後、ODBCで何もできなくなり、ボックスを再起動する必要があります。現在、問題の発生を回避するために、毎晩深夜にボックスを再起動するだけです。

これを試してみました http://support.Microsoft.com/kb/196271 しかし、それは機能せず、ほとんど悪化しました。

解決策は見えないようです。 ODBCを使用する他のボックスは、私たちが使用するこの問題を取得しません。現時点ではボックスを再フォーマットできません。レガシーのものです。

誰かがこの問題を見て、遭遇し、修正し、軽減したことがありますか?

3
ScaleOvenStove

確かに、メモリ不足の状態です。これは、DB接続を閉じないという非常に一般的な間違いが原因である可能性があります。私の推奨事項は次のとおりです。

  1. プロセスの実行時に使用可能な非ページプールメモリの量を調べます。マシンが故障するまで着実に減少する可能性があります。これは、ソケットが閉じられていないか、カーネルI/Oバッファーが解放されていないことを示しています。 (閉じていないソケットの可能性が高くなります)
  2. 'net sh winsock catalog> wsockcat.txt'を使用して、winsockスタック内の不明または外部のレイヤードサービスプロバイダー(LSP)を確認します。出力を他のWindowsサーバーと比較します。まず、mswsock.dllの外部で発生したスタックに挿入されたプロバイダーを疑ってください。
  3. 非ページプールが少ないことが問題である場合は、アプリケーションを再起動するか、DBサーバーがメモリを解放するかを確認してください。接続プーリングを使用していない可能性が高いため、一部のDBアクセス層が古い接続を開いたままにしている場合、「spwho」および「listapplications」は興味深い結果を示す可能性があります。

#3でDBサーバーが多数のアイドル接続を報告している場合は、ソケットのサーバー側から未使用の接続をアクティブにシャットダウンするスクリプトを作成することで、問題を軽減できる可能性があります。

2
Mike Haboustak

これは暗闇の中でのショットですが、ここに行きます。

「関数が10055を返しました」は、ODBCが使用するWindowsソケットライブラリであるWinSockから発生する、一般的なメモリ不足またはリソース不足のエラーです。

TCP/IPの代わりに名前付きパイプを使用するようにSQLServerからDB2への接続を構成する方法はありますか?それはWinSockを完全にバイパスします。

1
Joel Spolsky

今週、ハンドルリークのあるアプリケーションで問題が発生しました。症状の1つは、「portqry.exe」がWinsock10055エラーを返すことでした。

0
bpfinn