背景:
我正在使用用 C++ 编写的程序,它使用 SQL Native Client 上的 ODBC 建立连接以与 SQL Server 2000 数据库进行交互。
问题:
我的连接被抽象为一个对象,当对象被实例化时打开连接,当对象被销毁时关闭连接。我可以看到对象正在被销毁:它们的析构函数正在触发并且在这些析构函数内部SQLDisconnect( ConnHandle )
被调用,然后是SQLFreeHandle( SQL_HANDLE_DBC, ConnHandle );
但是,使用sp_Who2
SQL 中的性能监视器观察连接计数显示连接计数不断增加,尽管有这些连接被摧毁。
在执行运行足够长的函数链以创建数千个这样的对象并因此创建数千个连接之前,这并没有被证明是有问题的。
问:
有没有人见过这样的事情?这可能是什么原因造成的?我最初的谷歌搜索并没有证明很有成效!
编辑:
我已经验证SQLDisconnect
返回没有错误。
连接池已关闭。事实上,当我尝试使用 启用它SQLSetEnvAttr
时,我的应用程序在第二次调用时崩溃SQLDriverConnect
。