Собственный клиент SQL падает при открытии второго соединения при включении пула соединений? - PullRequest
0 голосов
/ 23 декабря 2008

Я работаю с приложением C ++, которое использует собственный клиент SQL для связи через 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.) Я комментирую эту строку, приложение работает без проблем.

Что может быть причиной этого?

Ответы [ 2 ]

1 голос
/ 19 февраля 2009

Вы случайно сталкиваетесь с той же проблемой, что и этот человек: http://www.mydatabasesupport.com/forums/ms-sqlserver/218008-2003-cluster-sql-2000-connection-pooling-causes-crash.html

0 голосов
/ 03 апреля 2009

Это может быть совершенно другая проблема (т. Е. Я не использую C ++), но, возможно, это поможет вам.

Приложение, над которым я работаю, также зависало при включении пула.

Проблема возникла, когда запрос к базе данных возвратил более одного набора записей.

Мое приложение зависло при попытке перейти к следующему набору записей.

Это что-то другое, но может быть связано с вашим делом.

...