Le message d'erreur 7391 peut s'afficher dans SQL Server 2000 lorsque vous exécutez une transaction distribuée sur un serveur lié après avoir installé Windows Server 2003 ou Windows XP Service Pack 2

Traductions disponibles Traductions disponibles
Numéro d'article: 839279 - Voir les produits auxquels s'applique cet article
Important Cet article contient des informations sur la modification du Registre. Avant de modifier le Registre, pensez à le sauvegarder et assurez-vous que vous savez le restaurer en cas de problème. Pour plus d'informations sur la sauvegarde, la restauration et la modification du Registre, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
256986 Description du Registre de Microsoft Windows
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous exécutez une transaction distribuée sur une instance de SQL Server, vous pouvez recevoir un message d'erreur semblable au suivant :

Serveur : Msg 7391, Niveau 16, État 1, Ligne 1
L'opération demandée ne peut pas être effectuée car le fournisseur OLE DB 'SQLOLEDB' n'a pas réussi à démarrer de transaction distribuée. [Le fournisseur OLE/DB a retourné le message : La nouvelle transaction ne peut pas s'inscrire dans le coordinateur de transactions spécifié. ] Trace de l'erreur OLE DB [Fournisseur OLE/DB 'SQLOLEDB' ITransactionJoin::JoinTransaction a retourné 0x8004d00a].


Ce problème peut se produire lorsque l'une des conditions suivantes est remplie :
  • Microsoft Windows Server 2003 ou Microsoft Windows XP Service Pack 2 (SP2) est installé sur l'ordinateur qui initialise la transaction distribuée.
  • Microsoft Windows Server 2003 ou Microsoft Windows XP SP2 est installé sur l'ordinateur distant qui exécute Microsoft SQL Server 2000, et cet ordinateur est lié à l'ordinateur qui initialise la transaction distribuée.

Cause

Ce comportement peut avoir l'une des origines suivantes :
  • Le Coordinateur de transactions distribuées Microsoft (MSDTC) est désactivé pour les transactions réseau.
  • Le Pare-feu Windows est activé sur l'ordinateur. Par défaut, le Pare-feu Windows bloque le Coordinateur de transactions distribuées Microsoft (MSDTC).

    Remarque Ce problème peut se produire même lorsque le Pare-feu Windows est désactivé.

Contournement

Avertissement Toute modification incorrecte du Registre à l'aide de l'Éditeur du Registre ou d'une autre méthode peut entraîner des problèmes sérieux. Ces problèmes peuvent vous obliger à réinstaller votre système d'exploitation. Microsoft ne peut pas garantir que ces problèmes puissent être résolus. Vous assumez l'ensemble des risques liés à la modification du Registre.

Pour contourner ce problème, procédez comme suit sur l'ordinateur sur lequel Windows Server 2003 ou Windows XP SP2 est installé :
  1. Assurez-vous que le compte Ouvrir une session en tant que du service MSDTC correspond au compte Service réseau. Pour cela, procédez comme suit :
    1. Cliquez sur Démarrer, puis sur Exécuter.
    2. Dans la boîte de dialogue Exécuter, tapez Services.msc, puis cliquez sur OK.
    3. Dans la fenêtre Services, recherchez le service Coordinateur de transactions distribuées sous Nom, dans le volet droit.
    4. Dans la colonne Se connecter en tant que, vérifiez si le compte sélectionné pour Se connecter en tant que est le compte Service réseau ou Système local.

      Si le compte Se connecter en tant que indique le compte Service réseau, passez à l'étape 2. S'il s'agit du compte Système local, passez à l'étape suivante.
    5. Cliquez sur Démarrer, puis sur Exécuter.
    6. Dans la boîte de dialogue Exécuter, tapez cmd, puis cliquez sur OK.
    7. À l'invite de commandes, tapez Net stop msdtc pour arrêter le service MSDTC.
    8. À l'invite de commandes, tapez Msdtc ?uninstall pour supprimer MSDTC.
    9. À l'invite de commandes, tapez regedit pour ouvrir l'Éditeur du Registre.
    10. Dans l'Éditeur du Registre, recherchez la clé suivante :

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC
      .

      Supprimez cette clé.
    11. Quittez l'Éditeur du Registre.
    12. À l'invite de commandes, tapez Msdtc ?install pour installer MSDTC.
    13. À l'invite de commandes, tapez Net start msdtc pour démarrer le service MSDTC.

      Notez que le compte Se connecter en tant que du service MSDTC est le compte Service réseau.
  2. Autorisez MSDTC à accepter la transaction réseau. Pour cela, procédez comme suit :
    1. Cliquez sur Démarrer, puis sur Exécuter.
    2. Dans la boîte de dialogue Exécuter, tapez dcomcnfg.exe, puis cliquez sur OK.
    3. Dans la fenêtre Services de composants, développez Services de composants, Ordinateurs et Poste de travail.
    4. Cliquez avec le bouton droit sur Poste de travail, puis cliquez sur Propriétés.
    5. Dans la boîte de dialogue Propriétés du Poste de travail, sous l'onglet MSDTC, cliquez sur Configuration de la sécurité.
    6. Dans la boîte de dialogue Configuration de la sécurité, activez la case à cocher Accès DTC réseau.
    7. Pour autoriser l'exécution de la transaction distribuée sur cet ordinateur à partir d'un ordinateur distant, activez la case à cocher Autoriser les transactions entrantes.
    8. Pour autoriser l'exécution de la transaction distribuée sur un ordinateur distant à partir de cet ordinateur, activez la case à cocher Autoriser les transactions sortantes.
    9. Dans le groupe Communication du gestionnaire de transactions, sélectionnez l'option Aucune authentification requise.
    10. Dans la boîte de dialogue Configuration de la sécurité, cliquez sur OK.
    11. Dans la boîte de dialogue Propriétés du Poste de travail, cliquez sur OK.
  3. Configurez le Pare-feu Windows de manière à inclure le programme MSDTC et le port 135 en tant qu'exceptions. Pour cela, procédez comme suit :
    1. Cliquez sur Démarrer, puis sur Exécuter.
    2. Dans la boîte de dialogue Exécuter, tapez Firewall.cpl, puis cliquez sur OK.
    3. Dans le Panneau de configuration, double-cliquez sur Pare-feu Windows.
    4. Dans la boîte de dialogue Pare-feu Windows, cliquez sur Ajouter un programme sous l'onglet Exceptions.
    5. Dans la boîte de dialogue Ajouter un programme, cliquez sur le bouton Parcourir, puis recherchez le fichier Msdtc.exe. Par défaut, le fichier se trouve dans le dossier <lecteur_installation>:\Windows\System32.
    6. Dans la boîte de dialogue Ajouter un programme, cliquez sur OK.
    7. Dans la boîte de dialogue Pare-feu Windows, sélectionnez l'option msdtc dans la liste Programmes et services.
    8. Cliquez sur Ajouter un port sous l'onglet Exception.
    9. Dans la boîte de dialogue Ajouter un port, tapez 135 dans la zone Numéro de port, puis cliquez pour sélectionner l'option TCP.
    10. Dans la boîte de dialogue Ajouter un port, tapez le nom de l'exception dans la zone Nom, puis cliquez sur OK.
    11. Dans la boîte de dialogue Pare-feu Windows, sélectionnez le nom utilisé pour l'exception à l'étape j dans la liste Programmes et services, puis cliquez sur OK.

Statut

Microsoft a confirmé l'existence d'un problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.

Plus d'informations

Procédure pour reproduire le problème

  1. Connectez-vous à un ordinateur sur lequel est installé Windows Server 2003 ou Windows XP SP2.
  2. Démarrez l'Analyseur de requêtes.
  3. Ajoutez un ordinateur distant qui exécute Microsoft SQL Server 2000 en tant que serveur lié. Pour cela, exécutez l'instruction Transact-SQL suivante dans l'Analyseur de requêtes :
    EXEC sp_addlinkedserver  '<remote_server>',  N'SQL SERVER'
    GO

    Remarque Remplacez remote_server (serveur_distant) par le nom de l'ordinateur à configurer en tant que serveur lié.
  4. Exécutez une transaction distribuée entre cet ordinateur et l'ordinateur distant. Pour cela, exécutez l'instruction Transact-SQL suivante dans l'Analyseur de requêtes :
    SET xact_abort ON 
    GO
    USE  pubs
    GO
    BEGIN DISTRIBUTED TRANSACTION
    SELECT  *  FROM <remote_server>.pubs.dbo.authors
    COMMIT TRAN
    GO
    
    Le message d'erreur décrit dans la section « Symptômes » de cet article est susceptible de s'afficher.

Références

Pour plus d'informations sur la configuration de Windows  XP Service Pack 2 en vue de son utilisation avec SQL Server 2000, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
841249 Comment faire pour configurer Windows XP Service Pack 2 pour une utilisation avec SQL Server

Propriétés

Numéro d'article: 839279 - Dernière mise à jour: dimanche 15 mai 2011 - Version: 4.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Standard
  • Microsoft Windows XP Embedded
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
Mots-clés : 
kbsqlserverengine kbregistry kberrmsg kbdtc kbdomain kbauthentication kbtransaction kbrpc kbprb KB839279
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com