【问题标题】:After Sql ALTER table I get - ERROR [HY000] [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt在 Sql ALTER 表之后我得到 - 错误 [HY000] [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt
【发布时间】:2014-06-17 11:06:19
【问题描述】:

在 Sql Server 2012 中,使用 ALTER 添加两个新字段后,当我们尝试在其他查询中再次使用连接时,我们得到:

错误 [HY000] [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt

请注意,我们的连接是使用 ODBC 连接完成的。

顺便说一句,当我将已更改的数据库复制到我的 DEV 机器时,它也会发生。

有人知道怎么解决吗?

【问题讨论】:

    标签: c# sql-server vb.net odbc


    【解决方案1】:

    这是在通知您,您不能在一个连接上运行多个活动查询。

    你可以单独使用它:

    • 在执行任何其他操作之前关闭或从记录集中获取所有记录。
    • 为第二个记录集打开一个新连接,而第一个
      一个仍然处于活动状态。

    【讨论】:

    • 我在 .Fill() 得到了这个,我在它之前和之后输入了一个 .Open() 和 .Close() 命令。谢谢提示。
    • 更正:我在 .Fill() 得到了这个,我在它之前和之后输入了一个 .Open() 和 .Close() 命令,因为它是“不必要的”,因为它会打开和关闭本身 - 但看起来并不总是。谢谢提示。
    【解决方案2】:

    我会检查您在 ALTER 之后是否正在执行 SQLFreeStmt(SQL_CLOSE) 或 SQLCloseCursor()。由于 yassine__ 上面给出的原因

    【讨论】:

    • 此 ALTER 与任何其他 ALTER 没有什么不同。此外,当我将更改后的数据库复制到我的 DEV 机器时,它也会发生。
    【解决方案3】:

    在为同一连接建立另一个 DataReader 之前,我错误地没有关闭 DataReader

    请注意,DataReader 之前已由垃圾收集器自动处理。 我提到了一个 ALTER TABLE 添加了 2 个新字段。 GC 没有处理 reader 的原因是我没有读取其中的所有字段(我读取了除了 2 个新字段之外的所有字段)。

    GC 收集第一个读者只是运气,直到我添加了这些字段。 之后它不再收集读者,然后我得到了那个例外。

    无论如何,我已经在 Finally 块内关闭了阅读器,它现在可以工作了。

    仍然是一个谜,在 Sql Server 2008 和(最肯定)在 Access 上,我没有遇到相同情况的异常。但我不确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 2018-02-23
      • 2016-11-29
      • 2021-03-09
      • 2016-09-21
      • 2017-12-13
      相关资源
      最近更新 更多