0

SQL Native Client を使用して ODBC 経由で SQL Server 2000 データベースと通信する C++ アプリケーションを使用しています。

データベース作業を行う前に、次のように環境ハンドルを割り当てます。

retcode = SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &EnvironmentHandle );

これで正常に完了します。

接続プーリングを有効にするために、上記のステートメントの前に、次を呼び出します。

retcode = SQLSetEnvAttr( NULL, SQL_ATTR_CONNECTION_POOLING, (SQLPOINTER) SQL_CP_ONE_PER_HENV, SQL_IS_INTEGER );

SQLSetEnvAttrが含まれている場合、成功を示す適切なコードを返します。ただし、データベースへの接続を確立するために 2 回目に呼び出されたときに、アプリケーションがクラッシュする原因とSQLDriverConnectなります (注: 最初の接続は を使用して作成され、この時点SQLDriverConnectで切断さSQLDisconnectれます)。この行をコメントアウトすると、アプリケーションは続行します。問題なく。

何が原因でしょうか?

4

2 に答える 2

1

この人が抱えていたのと同じ問題が発生している可能性がありますか?

于 2009-02-19T19:19:24.263 に答える
0

これはまったく別の問題である可能性があります (つまり、私は C++ を使用していません) が、役立つかもしれません。

プーリングをオンにすると、作業中のアプリケーションもクラッシュしました。

この問題は、データベース クエリが複数のレコード セットを返したときに発生しました。

次のレコード セットに移動しようとすると、アプリがクラッシュしました。

これは別のものですが、あなたのケースに関連している可能性があります。

于 2009-04-03T09:47:49.163 に答える