Могу ли я разделить одно соединение с базой данных между ODBC и ADO? - PullRequest
0 голосов
/ 18 декабря 2009

Возможно ли, чтобы соединение ODBC и соединение ADO совместно использовали один и тот же базовый сервер SQL Server, чтобы оба использовали один и тот же SPID?

В настоящее время я использую SQLDriverConnect и ADODB :: _ ConnectionPtr-> Open. Я могу сделать эти подключения в любом порядке, так что, возможно, можно открыть одно, используя другое?

(язык C ++, база данных SQL Server 2005 и 2008. Строка подключения ODBC использует DSN. ADO использует Provider = SQLNCLI10, но при необходимости можно изменить любой из них).

1 Ответ

1 голос
/ 18 декабря 2009

ADO использует OleDB, поэтому вы не можете использовать соединение с ODBC. Даже если вы используете провайдера ADO для ODBC, вы все равно не сможете этого сделать, так как никакой API ADO не позволяет обернуть существующий дескриптор соединения ODBC.

Но реальный вопрос: почему вы хотите поделиться этой связью? Единственная действительная причина - зарегистрировать два соединения в одной транзакции без выполнения обратной локальной распределенной транзакции. Регистрация двух разных соединений в одной и той же транзакции всегда была возможна, именно так работали MTS и COM +. Первое соединение использует sp_getbindtoken для получения токена регистрации, а второе соединение использует sp_bindsession для самостоятельной регистрации. Этот механизм находится в списке исчезающих, но в конце концов вы спрашиваете о технологии 90-х ... (ODBC, ADO)

...