简短的问题:我发现我需要通过 ODBC 使用 MARS,而不是通过 ADO/OLEDB,对吗?
更长的解释:
我刚刚发现我的 ODBC 代码(使用“Driver={SQL Native Client}”,MFC CDatabase 代码)需要 MARS(“MARS_Connection=yes;”),因为虽然我在打开 RecordSet 时没有发出多个 SELECT,但我确实这样做了获取一批行,然后需要打开另一个RecordSet发出新的SELECT,然后返回第一个RecordSet进行下一批。如果没有 MARS,我会收到 ODBC 错误“连接正忙于处理另一个命令的结果”。一切都很公平。
但是,我的代码与 ADO/OLEDB ("Provider=SQLNCLI", #import msado15.dll) 而不是 ODBC 的工作方式相同。在同样的情况下,我不必指定“MarsConn=yes”。
我很困惑/惊讶。这是正确的/预期的,还是我错过了什么?