Как исправить ошибку собственного клиента "Соединение занято результатами для другой команды"?

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

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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.

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

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

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

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

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

Другие советы

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

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

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

Эта ошибка произошла сегодня с подключением MS ODBC Driver 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, однако у каждой проблемы есть решение с водителем, который я могу сказать. Просто чтобы поощрить людей, использующих его, вместо этого быстро сдаваться.

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

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

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

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

Name - MARS_Connection
Value - Yes

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top