背景:
SQL Native Client で ODBC を使用して SQL Server 2000 データベースと対話するための接続を確立する、C++ でコーディングされたプログラムを使用しています。
問題:
オブジェクトがインスタンス化されたときに接続を開き、オブジェクトが破棄されたときに接続を閉じるオブジェクトに接続が抽象化されます。オブジェクトが破棄されていることがわかります。デストラクタが起動し、これらのデストラクタの内部でSQLDisconnect( ConnHandle )
呼び出されSQLFreeHandle( SQL_HANDLE_DBC, ConnHandle );
ています。ただし、sp_Who2
SQL でまたはパフォーマンス モニターを使用して接続数を監視すると、これらの接続にもかかわらず、接続数が容赦なく増加していることがわかります。破壊されています。
これは、これらのオブジェクトを数千、つまり数千の接続を作成するのに十分長く実行される一連の関数を実行するまで、問題がないことが証明されています。
質問:
このようなものを見たことがありますか? 何が原因でしょうか? 私の最初の Google 検索はあまり実りがありませんでした。
編集:エラーなしで返されること
を確認しました。SQLDisconnect
接続プーリングはオフです。実際、 を使用して有効にしようとするとSQLSetEnvAttr
、 への 2 回目の呼び出しが行われたときにアプリケーションがクラッシュしますSQLDriverConnect
。