我依稀记得在某处(在MSDN ODBC文档中?)读取一个应用程序不能与单个数据源建立多个连接。在我看来,我需要一个连接,应用程序的所有线程必须共享。
我试图查看这些信息,但我似乎无法再找到它了。有谁知道/记住这是如何工作的?
这一切都可能成为我们应用程序中的问题,因为它的一些线程将动态连接到他们选择的数据源。我不希望看到随机连接错误,如果其中两个将同时连接到一个源,所以我想仔细检查这个信息。
答案 0 :(得分:2)
也许您在the MSDN documentation中引用的语句是指在单个连接上只能激活一个语句的语句。它说:
每个连接多个活动语句
在SQL Server收到语句后,SQL Server TDS协议不允许接受来自该连接的任何其他语句,直到出现以下情况之一:
- 客户端应用程序处理整个结果集。
- 客户端发送一条语句告诉服务器它可以关闭结果集的其余部分。
这意味着当ODBC应用程序使用默认结果集时,SQL Server不支持连接句柄上的多个活动语句句柄,并且只能在任何时间点处理一个语句。
但是,当ODBC应用程序使用API服务器游标时,驱动程序可以在连接上支持多个活动语句。当在客户端收到每个游标命令的行集时,SQL Server认为该语句已完成,并且它接受来自该连接句柄的另一个语句句柄的另一个语句。
多个连接都没问题。每个连接多个语句,不太好。
答案 1 :(得分:1)
不,ODBC本身没有限制。特定驱动程序可能由于某种原因限制了连接,但根据规范我不知道有任何限制。