代码之家  ›  专栏  ›  技术社区  ›  stusmith

我可以在ODBC和ADO之间共享一个数据库连接吗?

  •  0
  • stusmith  · 技术社区  · 16 年前

    是否可以有一个ODBC连接和一个ADO连接共享相同的底层SQL Server连接,以便两者都使用相同的SPID?

    目前我使用的是sqlDriverConnect和adodb::\u connectionptr->open。我可以按任意顺序建立这些连接,所以也许可以利用另一个来打开一个?

    (语言为C++,数据库为SQL Server 2005和2008)。ODBC连接字符串使用DSN。ADO使用provider=sqlncli10,但如果需要,可以更改其中一个)。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Remus Rusanu    16 年前

    ADO使用OLEDB,因此无法与ODBC共享连接。即使将ADO提供程序用于ODBC,仍然无法使用,因为没有ADO API允许包装现有的ODBC连接句柄。

    但真正的问题是:你为什么要共享连接?唯一有效的原因是在同一个事务中注册两个连接,而不执行环回本地分布式事务。在同一个事务中注册两个不同的连接始终是可能的,这就是MTS和COM+的工作方式。第一个连接使用 sp_getbindtoken 要获取注册令牌,第二个连接使用 sp_bindsession 自己注册。这一机制已经被列入了不受欢迎的名单,但毕竟你在问90年代的技术……(ODBC,ADO)