Wie behebe ich den nativen Client-Fehler „Verbindung ist mit Ergebnissen für einen anderen Befehl beschäftigt“?

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

  •  09-06-2019
  •  | 
  •  

Frage

Ich bekomme ein Connection Busy With Results From Another Command Fehler von einem SQLServer Native Client-Treiber, wenn ein SSIS-Paket ausgeführt wird.Nur bei Kommunikation mit SQLServer 2000.Ein anderer Teil, der mit SQLServer 2005 kommuniziert, scheint immer einwandfrei zu laufen.Irgendwelche Gedanken?

War es hilfreich?

Lösung

Microsoft KB-Artikel 822668 ist hier relevant:

FIX:Die Fehlermeldung „Verbindung ist mit Ergebnissen für einen anderen Befehl ausgelastet“ wird angezeigt, wenn Sie eine Verbindungsserverabfrage ausführen

Symptome

Unter Stressbedingungen erhalten Sie möglicherweise die folgende Fehlermeldung, wenn Sie Verbindungsserveraktivitäten durchführen:

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.

Notiz Die OLE DB-Fehlerquelle kann variieren.Allerdings enthalten alle Variationen der Fehlermeldung den Text „Verbindung ist mit Ergebnissen für einen anderen Befehl beschäftigt“.

Auflösung

Um dieses Problem zu beheben, besorgen Sie sich das neueste Service Pack für Microsoft SQL Server 2000.

Wie dort erwähnt, wurde das Problem erstmals in SQL Server 2000 Service Pack 4 behoben.

Dieser Blogbeitrag von Mark Meyerovich, einem Senior Software Engineer bei RDA Corp, bietet ebenfalls einige Einblicke (jetzt archiviert, da der ursprüngliche Link nicht mehr verfügbar ist):

Upgrade des SQL Server Service Packs

Eine schnelle Suche bei Google ergibt den folgenden Artikel (http://support.microsoft.com/kb/822668):FIX:Die Fehlermeldung „Verbindung ist mit Ergebnissen für einen anderen Befehl ausgelastet“ wird angezeigt, wenn Sie eine Verbindungsserverabfrage ausführen.

Dies deutet grundsätzlich darauf hin, dass es sich bei dem Problem um einen Fehler handelt, und empfiehlt ein Upgrade auf Service Pack 4.Wir haben mit SQL Server 2000 SP3 angefangen und haben einige Verbindungsserver im Einsatz, also probieren wir es aus.Nach dem Upgrade auf SP4 – gleiches Ergebnis.

Andere Tipps

Wie ich gerade herausgefunden habe, kann dies auch unter SQL 2005 passieren, wenn Sie MARS nicht aktiviert haben.Ich wusste nicht einmal, dass es standardmäßig deaktiviert ist, aber es ist so.Und stellen Sie sicher, dass Sie die Verbindungstyp "NATIVE OLEDB\SQL Native Client".Wenn Sie die Verbindung vom Typ „OLEDB.1“ (oder was auch immer) verwenden, ist MARS nicht einmal eine Option, und Sie erhalten das SQL 2000-Verhalten, das unangenehm ist.

Sie können MARS aktivieren, indem Sie die Verbindungseigenschaften öffnen, auf „Alle“ klicken und im Management Studio nach unten scrollen.

Ich weiß, dass Ihre Frage schon lange beantwortet wurde, aber ich überlege das nur dem nächsten Idioten wie mir, der sich daran verbrennt.

Hatte heute diesen Fehler mit der Verbindung von MS ODBC Driver 11 für SQL Server für Linux zu SQL Server.Wollte dem nächsten Suchenden helfen, da dies das erste Google-Suchergebnis war, als ich die Suche durchführte.

Sie müssen MARS_Connection in /etc/odbc.ini wie folgt festlegen:

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

Apropos MS ODBC Linux-Treiber:Es ist eine völlige PITA, damit umzugehen, aber ich habe darauf bestanden, eine native Lösung zu verwenden.Ich habe vor allem bei der Arbeit mit ZF2 zu viele Wände erlebt, aber ich kann sagen, dass es für jedes Problem eine Lösung mit dem Treiber gibt.Nur um die Leute zu ermutigen, die es nutzen, anstatt schnell aufzugeben.

Wenn jemand bei der Verwendung von PHP PDO mit ODBC auf diesen lästigen Fehler gestoßen ist, dann verwenden Sie closeCursor() Methode nach der Abfrageausführung.

Nur zur Information, falls jemand anderes das Problem hat.Ich habe versucht, eine Verbindung über NetCobol von Fujitsu auf einem SQLEXPRESS über ODBC mit eingebettetem SQL herzustellen, und um das Problem zu lösen, musste ich nämlich einen Wert in der Registrierung ändern

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

mit MyDSN als String-Wert:

Name - MARS_Connection
Value - Yes

Ich füge die Informationen einfach hier ein, wenn sie helfen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top