Comment corriger l'erreur du client natif « La connexion est occupée avec les résultats d'une autre commande » ?

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

  •  09-06-2019
  •  | 
  •  

Question

je reçois un Connection Busy With Results From Another Command erreur d'un pilote SQLServer Native Client lorsqu'un package SSIS est en cours d'exécution.Uniquement lorsque vous parlez à SQLServer 2000.Une partie différente qui communique avec SQLServer 2005 semble toujours fonctionner correctement.Des pensées?

Était-ce utile?

La solution

Article 822668 de la base de connaissances Microsoft est pertinent ici:

RÉPARER:Le message d'erreur « La connexion est occupée avec les résultats d'une autre commande » s'affiche lorsque vous exécutez une requête de serveur lié

Symptômes

Dans des conditions de stress, vous pouvez recevoir le message d'erreur suivant lorsque vous effectuez une activité de serveur lié :

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.

Note La source OLE DB de l’erreur peut varier.Cependant, toutes les variantes du message d'erreur incluent le texte « La connexion est occupée avec les résultats d'une autre commande ».

Résolution

Pour résoudre ce problème, procurez-vous le dernier Service Pack pour Microsoft SQL Server 2000.

Comme indiqué ici, le problème a été corrigé pour la première fois dans SQL Server 2000 Service Pack 4.

Ce billet de blog par Mark Meyerovich, ingénieur logiciel senior chez RDA Corp, fournit également un aperçu (maintenant archivé, car le lien d'origine est tombé en panne) :

Mise à niveau du Service Pack SQL Server

Une recherche rapide sur Google fait apparaître l'article suivant (http://support.microsoft.com/kb/822668) :RÉPARER:Le message d'erreur « La connexion est occupée avec les résultats d'une autre commande » s'affiche lorsque vous exécutez une requête de serveur lié.

Cela implique essentiellement que le problème est un bug et recommande une mise à niveau vers le Service Pack 4.Nous avons commencé avec SQL Server 2000 SP3 et nous avons quelques serveurs liés dans l'équation, nous essayons donc.Après la mise à niveau vers SP4 – même résultat.

Autres conseils

Comme je viens de le découvrir, cela peut également se produire sur SQL 2005 si MARS n'est pas activé.Je n'ai même jamais su qu'il était désactivé par défaut, mais c'est le cas.Et assurez-vous que vous utilisez le type de connexion "natif Oledb SQL Native Client".Si vous utilisez la connexion de type "OLEDB.1" (ou autre...) MARS n'est même pas une option, et vous obtenez le comportement de SQL 2000, ce qui est désagréable.

Vous pouvez activer MARS en ouvrant les propriétés de connexion, en cliquant sur "Tout" et en faisant défiler vers le bas dans Management Studio.

Je sais que votre question a reçu une réponse depuis longtemps, mais je la lance simplement pour le prochain connard comme moi qui sera brûlé par ça.

J'ai eu cette erreur aujourd'hui avec la connexion MS ODBC Driver 11 pour SQL Server pour Linux à SQL Server.Je voulais aider le prochain chercheur étant donné qu'il s'agissait du premier résultat de recherche Google lorsque j'ai effectué la recherche.

Vous devez définir MARS_Connection dans /etc/odbc.ini comme suit :

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

En parlant du pilote Linux MS ODBC :C'est un PITA complet pour y faire face mais j'ai insisté pour utiliser une solution native.J'ai rencontré trop de murs, surtout en travaillant avec ZF2, cependant, je peux dire que chaque problème a une solution avec le pilote.Juste pour encourager les gens qui l’utilisent à abandonner rapidement.

Si quelqu'un a rencontré ce bug ennuyeux lors de l'utilisation de PHP PDO avec ODBC, utilisez closeCursor() méthode après l’exécution de la requête.

Juste pour information si quelqu'un d'autre a le problème.J'ai essayé de me connecter via NetCobol de Fujitsu sur un SQLEXPRESS via ODBC avec SQL embarqué et pour résoudre le problème j'ai dû changer une valeur dans le registre à savoir

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

avec MyDSN comme valeur de chaîne :

Name - MARS_Connection
Value - Yes

Je viens de mettre l'information ici si cela peut aider.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top