0

我正在使用一个 C++ 应用程序,该应用程序使用 SQL Native Client 通过 ODBC 与 SQL Server 2000 数据库进行通信。

在做任何数据库工作之前,我分配一个环境句柄如下:

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,当包含时,返回一个好的代码,表示成功。但是,它会导致我的应用程序在第二次SQLDriverConnect调用以建立与数据库的连接时崩溃(注意:此时第一个连接将使用创建SQLDriverConnect并断开使用SQLDisconnect。)如果我将此行注释掉,应用程序将继续没有麻烦。

这可能是什么原因造成的?

4

2 回答 2

1

您是否有机会遇到与此人相同的问题:http ://www.mydatabasesupport.com/forums/ms-sqlserver/218008-2003-cluster-sql-2000-connection-pooling-causes-crash.html

于 2009-02-19T19:19:24.263 回答
0

这可能是完全不同的问题(即我不使用 C++),但也许它可以帮助你。

当我打开池时,我正在处理的应用程序也崩溃了。

当数据库查询返回多个记录集时会出现问题。

当我尝试移动到下一个记录集时,我的应用程序崩溃了。

这是不同的东西,但可能与您的情况有关。

于 2009-04-03T09:47:49.163 回答