如何修复本机客户端错误“连接正忙于处理另一个命令的结果”?

StackOverflow https://stackoverflow.com/questions/39928

  •  09-06-2019
  •  | 
  •  

我得到了一个 Connection Busy With Results From Another Command 当 SSIS 包运行时,来自 SQLServer Native Client 驱动程序的错误。仅当与 SQLServer 2000 对话时。与 SQLServer 2005 对话的不同部分似乎总是运行良好。有什么想法吗?

有帮助吗?

解决方案

Microsoft 知识库文章 822668 在这里相关:

使固定:运行链接服务器查询时出现“连接正忙于处理另一个命令的结果”错误消息

症状

在压力条件下,当您执行链接服务器活动时,您可能会收到以下错误消息:

Server: Msg 7399, Level 16, State 1, Procedure <storedProcedureName>, Line 18 OLE DB provider 'SQLOLEDB' reported an error. 
OLE/DB Provider 'SQLOLEDB' ::GetSchemaLock returned 0x80004005:

OLE DB provider SQLOLEDB supported the Schema Lock interface, but returned 0x80004005 for GetSchemaLock .]. 
OLE/DB provider returned message: Connection is busy with results for another command 
OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ::CreateSession returned 0x80004005.

笔记 错误的 OLE DB 来源可能有所不同。但是,错误消息的所有变体都包含文本“连接正忙于处理另一个命令的结果”。

解决

要解决此问题,请获取 Microsoft SQL Server 2000 的最新 Service Pack。

正如那里所指出的,该问题首先在 SQL Server 2000 Service Pack 4 中得到纠正。

这篇博文 RDA Corp 的高级软件工程师 Mark Meyerovich 也提供了一些见解(现已存档,因为原始链接已失效):

SQL Server 服务包升级

在 Google 上快速搜索会出现以下文章(http://support.microsoft.com/kb/822668):使固定:当您运行链接服务器查询时,会出现“连接正忙于处理另一个命令的结果”错误消息。

它基本上意味着该问题是一个错误,并建议升级到 Service Pack 4。我们已经开始使用 SQL Server 2000 SP3,并且我们确实有一些链接服务器,所以我们尝试一下。升级到 SP4 后 – 结果相同。

其他提示

正如我刚刚发现的,如果您没有启用 MARS,这种情况也可能发生在 SQL 2005 上。我什至不知道它默认是禁用的,但它确实是禁用的。并确保您使用的是“本机OLEDB SQL本机客户端”连接类型。如果您使用“OLEDB.1”类型连接(或其他...)MARS 甚至不是一个选项,并且您会得到 SQL 2000 行为,这是令人讨厌的。

您可以通过打开连接属性、单击“全部”并在 Management Studio 中向下滚动来启用 MARS。

我知道你的问题早已得到解答,但我只是把这个问题抛给像我这样被这个问题烧伤的下一个傻瓜。

今天使用 MS ODBC Driver 11 for SQL Server for Linux 到 SQL Server 的连接时出现此错误。考虑到这是我进行搜索时的第一个 Google 搜索结果,我想帮助下一个搜索者。

您需要在 /etc/odbc.ini 中设置 MARS_Connection,如下所示:

[ConnName]
Driver=ODBC Driver 11 for SQL Server
Server=192.168.2.218,1433
Database=DBNameHere
MARS_Connection=yes

说到 MS ODBC Linux 驱动程序:这是一个完整的 PITA 来处理它,但我坚持使用本机解决方案。我经历了太多的墙壁,尤其是在使用 ZF2 时,但是,我可以说,每个问题都有一个解决方案。只是为了鼓励人们使用它而不是迅速放弃。

如果有人在使用 PHP PDO 和 ODBC 时遇到这个恼人的错误,那么使用 closeCursor() 查询执行后的方法。

如果其他人遇到问题,仅供参考。我尝试通过带有嵌入式 sql 的 ODBC 通过富士通的 NetCobol 在 SQLEXPRESS 上进行连接,为了解决这个问题,我必须更改注册表中的值,即

\HKLM\Software\ODBC\ODBC.INI\MyDSN

将 MyDSN 作为字符串值:

Name - MARS_Connection
Value - Yes

如果有帮助的话,我只是将信息放在这里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top