报的错误:

[Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt.
服务端要使用SQL SERVER2005或以上版本。并且使用ODBC连接时,改连接字符串为:

“DSN=testdb;UID=sa;PWD=12345;Mars_Connection=yes;”

ADO与ODBC相同,只要在连接字符串中加上”Mars_Connection=yes;”就可以解决了。

SQL Server 2005 在访问数据库引擎的应用程序中引入了对多个活动结果集 (MARS) 的支持。在 SQL Server 的早期版本中,数据库应用程序无法在单个连接上保持多个活动语句。使用 SQL Server 默认结果集时,应用程序必须先处理或取消从某一批处理生成的所有结果集,然后才能对该连接执行任何其他批处理。SQL Server 2005 引入了新的连接属性,该属性允许应用程序在每个连接上使用多个待定请求,具体而言,每个连接可以具有多个活动的默认结果集。

MARS 通过以下新功能简化了应用程序设计:

应用程序可以同时打开多个默认结果集,并且交错读取它们。

应用程序可以在默认结果集打开的同时执行其他语句(例如 INSERT、UPDATE、DELETE 和存储过程调用)。

下列指南对使用 MARS 的应用程序很有帮助:

默认结果集应该用于使用单个 SQL 语句(SELECT、带 OUTPUT 的 DML、RECEIVE、READ TEXT 等)生成的短期或较小结果集。

服务器游标应该用于使用单个 SQL 语句生成的长期或较大结果集。

对于过程请求(不论它们是否返回结果)以及返回多个结果的批处理,应始终读取到它们的结果的末尾。

尽可能使用 API 调用(而不是 Transact-SQL 语句)更改连接属性和管理事务。

在 MARS 中,有多个批处理并发运行时禁止会话范围内的模拟。

参考 http://technet.microsoft.com/zh-cn/library/ms131686.aspx