是否可以让 ODBC 连接和 ADO 连接共享相同的底层 SQL Server 连接,以便两者都使用相同的 SPID?
目前我正在使用 SQLDriverConnect 和 ADODB::_ConnectionPtr->Open。我可以按任一顺序建立这些连接,所以也许可以打开一个使用另一个?
(语言是 C++,数据库是 SQL Server 2005 和 2008。ODBC 连接字符串使用 DSN。ADO 使用 Provider=SQLNCLI10,但如果需要,可以更改其中一个)。
是否可以让 ODBC 连接和 ADO 连接共享相同的底层 SQL Server 连接,以便两者都使用相同的 SPID?
目前我正在使用 SQLDriverConnect 和 ADODB::_ConnectionPtr->Open。我可以按任一顺序建立这些连接,所以也许可以打开一个使用另一个?
(语言是 C++,数据库是 SQL Server 2005 和 2008。ODBC 连接字符串使用 DSN。ADO 使用 Provider=SQLNCLI10,但如果需要,可以更改其中一个)。
ADO 使用 OleDB,因此您不能与 ODBC 共享连接。即使您为 ODBC 使用 ADO 提供程序,您仍然无法使用,因为没有 ADO API 允许包装现有的 ODBC 连接句柄。
但真正的问题是:为什么要共享连接?唯一有效的原因是在同一个事务中注册两个连接而不执行环回本地分布式事务。在同一个事务中注册两个不同的连接总是可能的,这就是 MTS 和 COM+ 的工作方式。第一个连接使用sp_getbindtoken获取注册令牌,第二个连接使用sp_bindsession进行自身注册。这种机制在濒临弃用的名单上,但毕竟你问的是90年代的技术......(ODBC,ADO)