CORRECTIF : « Nom d’objet non valide » erreur lors de la mise à jour par une procédure stockée dans la base de données différente


Symptômes


L’erreur suivante est renvoyée, où le nom de l’objet est le nom de la table que vous essayez de mettre à jour :
Nom d’objet incorrect nom d’objet
Ce message d’erreur se produit dans les conditions suivantes :
  • Il existe une procédure SQL Server stockées dans une base de données qui sélectionne des enregistrements d’une table dans une autre base de données.
  • L’objet recordset résultant est renvoyée à une application ou un service.
  • Ce jeu d’enregistrements est ensuite passé out-of-process sous la forme d’un jeu d’enregistrements ADO (ActiveX Data Objects) déconnecté dans une autre application client.
  • Une tentative est effectuée pour mettre à jour le jeu d’enregistrements déconnecté.

Si le jeu d’enregistrements n’est jamais marshalé hors processus, mais est remis directement dans le processus qui tente de mettre à jour au lieu de cela, l’instruction de mise à jour réussit.

Cause


La partie distante d’ADO (Msdaprst.dll) est remplacement accidentel de portions de métadonnées contenues dans l’objet recordset. Lors de la création par la suite de l’instruction de mise à jour , ces métadonnées ne sont pas disponibles et une syntaxe incorrecte est générée.

Examen de la trace de journaux indiquent que la syntaxe correcte de database.owner.tablename a été utilisée lors de la sélection des enregistrements, mais uniquement le nom de la table a été utilisé lors de la construction de l’instruction de mise à jour .

Dans la mesure où la connexion pointe actuellement vers la base de données contenant la procédure stockée et la table n’existe pas dans cette base de données, les erreurs « Nom d’objet non valide » sont renvoyés.

Résolution


Un correctif pris en charge est désormais disponible auprès de Microsoft, mais il ne vise qu’à corriger le problème décrit dans cet article. Il s’applique uniquement aux ordinateurs rencontrant ce problème spécifique. Ce correctif peut subir des tests supplémentaires. Par conséquent, si vous n’êtes pas sérieusement concerné par ce problème, Microsoft vous recommande d’attendre le prochain service pack Microsoft Data Access qui contiendra ce correctif.

Pour résoudre ce problème immédiatement, contactez les Services de Support technique Microsoft pour obtenir le correctif. Pour obtenir une liste complète des numéros de téléphone des Services de Support technique Microsoft et des informations sur les coûts de support, visitez le site Web de Microsoft à l’adresse suivante :Remarque: dans certains cas, les frais généralement encourus pour la prise en charge des appels peuvent être annulés si un technicien du support technique Microsoft détermine qu’une mise à jour spécifique peut résoudre votre problème. Les coûts habituels du support technique s’appliqueront aux autres questions et problèmes qui ne relèvent pas de la mise à jour spécifique en question.

La version anglaise de ce correctif doit avoir les attributs de fichier suivants ou une version ultérieure :
   Date              Version      Size    File name      
-----------------------------------------------------
7/22/99 2.10.4321 203KB msdaprst.dll




État


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés au début de cet article.

Ce problème a été corrigé dans MDAC 2.5.

Pour la version la plus récente de Microsoft Data Access composants (MDAC), consultez le site Web de Microsoft à l’adresse suivante :

Plus d'informations





IMPORTANT !

Il est déconseillé d’installer ce correctif sur un ordinateur qui exécute actuellement MDAC 2.1 SP2 (version 2.12.4202) ou une version ultérieure. Ce correctif logiciel ne doit être utilisé qu’avec les machines exécutant MDAC 2.1 SP1 (version 2.10.3711) ou une version antérieure.

Afin d’éliminer les problèmes de fragmentation de la mémoire, les modifications de code significatives ont été apportées entre MDAC 2.1 SP1 et MDAC 2.1 SP2. Pendant qu’il n’est pas prévu que toute erreur fatale se produit si ce correctif est appliqué pour MDAC 2.1 SP2, c’est fortement déconseillée.

Un correctif logiciel distinct existe pour résoudre ce problème dans MDAC 2.1 SP2.

Consultez la section Références de cet article pour plus d’informations.

Installation manuelle

  1. Fermez ou arrêtez les applications ou les services qui sont à l’aide de Msdaprst.dll. Il peut s’agir de Internet Information Server (IIS), Microsoft Transaction Server (MTS), Microsoft Distributed Transaction Coordinator (DTC) et toutes les applications ADO ou OLE DB.
  2. Télécharger la version de correctif de Msdaprst.dll dans un dossier temporaire.
  3. Recherchez et renommez la version actuelle de Msdaprst.dll, qui doit se trouver dans le dossier \Program files\System\msadc.
  4. Copiez la version de correctif de Msdaprst.dll dans le même emplacement et redémarrer vos services et applications.


Avis important pour les utilisateurs de Microsoft Windows 95/98

Si vous installez ce correctif sur un ordinateur exécutant Windows 95 ou un ordinateur avec la version originale de Windows 98, vous devrez installer la DLL de Migration Windows 98 fourni avec ce correctif.

Remarque: Lisez le fichier Migrate_qfe.txt qui est inclus dans le fichier Migration.exe inclus dans le téléchargement.



RÉFÉRENCES


Pour plus d’informations sur ce correctif telle qu’elle s’applique à MDAC 2.1 SP2, reportez-vous à l’article suivant trouvé dans la Base de connaissances Microsoft :

238092 des erreurs de nom d’objet non valide lors de la mise à jour par le biais d’une procédure stockée dans la base de données différente


Pour plus d’informations sur le problème de la fragmentation de la mémoire mentionné ci-dessus, reportez-vous à l’article suivant trouvé dans la Base de connaissances Microsoft :
230101 les requêtes de données sporadiquement renvoient des jeux d’enregistrements vide