ODBC连接数据库报"连接繁忙导致另一个命令"

数据库 同时被 2 个专栏收录
10 篇文章 0 订阅
77 篇文章 5 订阅

报的错误:

[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

转载请注明来源:http://blog.csdn.net/defaultbyzt


  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值