Как исправить ошибку собственного клиента «Соединение занято результатами для другой команды»? - PullRequest
5 голосов
/ 02 сентября 2008

Я получаю ошибку Connection Busy With Results From Another Command от драйвера собственного клиента SQLServer, когда выполняется пакет служб SSIS. Только при общении с SQLServer 2000. Кажется, что другая часть, которая общается с SQLServer 2005, всегда работает нормально. Есть мысли?

Ответы [ 5 ]

12 голосов
/ 01 февраля 2010

Как я только что узнал, это может произойти и в SQL 2005, если у вас не включен MARS. Я даже не знал, что это было отключено по умолчанию, но это так. И убедитесь, что вы используете Тип подключения «NATIVE OLEDB \ Native Client». Если вы используете соединение типа «OLEDB.1» (или что-то еще ...), MARS даже не вариант, и вы получаете поведение SQL 2000, что неприятно.

Вы можете включить MARS, открыв свойства соединения, щелкнув «Все» и прокрутив его вниз в Management Studio.

Я знаю, что на ваш вопрос уже давно дан ответ, но я просто добавляю его для следующего лоха, как я, которого это обожгло.

5 голосов
/ 25 января 2015

Сегодня произошла эта ошибка с драйвером MS ODBC 11 для SQL Server для Linux с подключением к SQL Server. Хотел помочь следующему поисковику, учитывая, что это был первый результат поиска Google, когда я выполнил поиск.

Вам необходимо установить MARS_Connection в /etc/odbc.ini следующим образом:

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

Говоря о драйвере MS ODBC для Linux: это полный PITA, но я настаивал на использовании нативного решения. Я испытал слишком много стен, особенно работая с ZF2, однако у каждой проблемы есть решение с водителем, который я могу сказать. Просто чтобы поощрить людей, использующих его, вместо этого быстро сдаваться.

2 голосов
/ 29 июля 2013

Если кто-то встречал эту досадную ошибку при использовании PHP PDO с ODBC, то используйте метод closeCursor() после выполнения запроса.

1 голос
/ 02 сентября 2008

Статья Microsoft KB 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.

Как уже отмечалось, проблема была впервые исправлена ​​в SQL Server 2000 с пакетом обновления 4.

Это сообщение в блоге Марка Мейеровича, старшего инженера-программиста в RDA Corp, также дает некоторую информацию (в настоящее время архивировано, поскольку исходная ссылка прекратилась):

Обновление пакета обновления SQL Server

Быстрый поиск в Google приводит к появлению следующей статьи (http://support.microsoft.com/kb/822668): ИСПРАВЛЕНИЕ: Сообщение об ошибке «Соединение занято с результатами для другой команды» появляется при выполнении запроса на связанный сервер.

Это в основном означает, что проблема заключается в ошибке, и рекомендует обновить пакет обновления 4. Мы начали с SQL Server 2000 с пакетом обновления 3 (SP3) и в уравнении есть несколько связанных серверов, поэтому мы попробуем. После обновления до SP4 - тот же результат.

0 голосов
/ 08 мая 2017

Просто для информации, если у кого-то есть проблемы. Я попытался подключиться через NetCobol от Fujitsu на SQLEXPRESS через ODBC со встроенным sql, и для решения проблемы мне пришлось изменить значение в реестре, а именно

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

с MyDSN в качестве строкового значения:

Name - MARS_Connection
Value - Yes

Я просто разместил здесь информацию, если она может помочь.

...