我有一个 Delphi 应用程序,它使用 DevArt 的 SDAC 组件连接到 SQL Server 数据库,我们安装了 200 个该软件,并且仅针对一个客户,对于某些用户,我注意到以下错误:
“连接正忙于处理另一个命令的结果”=“La connessione è ocpata dai risultati di un altro comando”。
SQL 版本:完全启用文件流的 SQL Server 2008 R2 Express
我的应用程序创建数据库用户和 SQL 帐户登录名:
- 创建一个新用户,那就没有问题了
- 在我的应用程序中更改用户代码,这意味着创建了另一个数据库用户和 SQL 帐户登录,我遇到了错误
- 此问题仅发生在部分用户身上,而非所有用户
我已经尝试过但没有运气:
- 删除并重新安装数据库
- 卸载并重新安装 SQL Server 实例
- 检查了 SQL Server 中的用户/帐户属性(一切正常)
如果您需要具体信息,请告诉我
------------新信息------------
我从 Studio Management 中更好地检查了所有实例属性,我注意到 CPU 没有被检查(见下图)。
相反,在 SQL Server 的所有其他正常安装中,我看到的是已填充的复选框。 难道是这个问题?
我希望这可以帮助你帮助我......
最佳答案
“连接正忙于处理另一个命令的结果”错误意味着至少有两个查询使用同一连接。如果您在多个线程中使用一个连接,则可能会出现此问题。为了解决这种情况下的问题,每个线程中都应该有连接(TMSConnection 组件)。 此外,如果将 TCustomMSDataSet.FetchAll 属性设置为 False,也可能会出现此问题。当 FetchAll=False 时,此类查询的执行会阻塞当前 session 。为了避免阻塞 OLEDB 创建额外的 session ,这可能导致“连接正忙于处理另一个命令的结果”错误。要解决这种情况下的问题,您应该将 TMSConnection.Options.MultipleActiveResultSets 属性设置为 True。 MultipleActiveResultSets 属性启用对 SQL Server 多事件结果集 (MARS) 技术的支持。它允许应用程序每个连接有多个待处理请求,特别是每个连接有多个事件默认结果集。请注意,MultipleActiveResultSets 属性仅在使用 SQL Native Client 时才起作用。因此,您还应该将 TMSConnection.Options.Provider 属性设置为 prNativeClient。
关于sql-server - 为什么只有部分用户收到错误 : "Connection is busy with results for another command",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9017264/