Question

Est-ce même une question valable ?J'ai une application Windows .NET qui utilise MSTDC et elle lève une exception :

System.Transactions.TransactionManagerCommunicationException :L'accès au réseau pour Distributed Transaction Manager (MSDTC) a été désactivé.Veuillez activer DTC pour l'accès au réseau dans la configuration de sécurité pour MSDTC à l'aide de l'outil d'administration des services de composant ---> System.Runtime.InteropServices.CommentXception (0x8004D024):Le gestionnaire de transactions a désactivé sa prise en charge des transactions distantes / réseau.(Exception de HRESULT :0x8004d024) sur system.transactions.oletx.idtcproxyshimfactory.receivetransaction (uint32 propgationtokensize, byte [] propgationtoken, intptr meastentifier, guid & transactionIdentifier, oletxtransactionisolationLevel & isolationlevel, itransactionfier & transactionShim) ....

J'ai suivi le guide Kbalertz pour activer MSDTC sur le PC sur lequel l'application est installée, mais l'erreur persiste.

Je me demandais si c'était un problème de base de données ?Si oui, comment puis-je le résoudre ?

Pas de solution correcte

Autres conseils

Utilisez-le pour Windows Server 2008 r2 et Windows Server 2012 R2

  1. Cliquez sur Commencer, Cliquez sur Courir, taper décomcnfg puis cliquez sur D'ACCORD ouvrir Services de composants.

  2. Dans l'arborescence de la console, cliquez pour développer Services de composants, Cliquez pour agrandir Des ordinateurs, Cliquez pour agrandir Mon ordinateur, Cliquez pour agrandir Coordinateur de transactions distribuées puis cliquez sur DTC local.

  3. Clic-droit DTC local et cliquez Propriétés pour afficher le Propriétés DTC locales boite de dialogue.

  4. Clique le Sécurité languette.

  5. Coche "Accès DTC réseau" case à cocher.

  6. Cochez enfin "Autoriser les appels entrants" et "Autoriser les sorties" cases à cocher.

  7. Cliquez sur Appliquer, D'ACCORD.

  8. Un message apparaîtra à propos de redémarrage le service.

  9. Cliquez sur D'ACCORD et c'est tout.

Référence : https://msdn.microsoft.com/en-us/library/dd327979.aspx

Note: Parfois, le pare-feu réseau sur l'ordinateur local ou le serveur peut interrompre votre connexion, alors assurez-vous de créer des règles pour "Autoriser les appels entrants" et "Autoriser les sorties" connexion pour C:\Windows\System32\msdtc.exe

Avez-vous même besoin de MSDTC ?L'escalade que vous rencontrez est souvent provoquée par la création de plusieurs connexions au sein d'un seul TransactionScope.

Si vous en avez besoin, vous devez l'activer comme indiqué dans le message d'erreur.Sous XP :

  • Accédez à Outils d'administration -> Services de composants
  • Développez Services de composants -> Ordinateurs ->
  • Clic droit -> Propriétés -> onglet MSDTC
  • Appuyez sur le bouton Configuration de la sécurité

J'ai découvert que la meilleure façon de déboguer est d'utiliser l'outil Microsoft appelé DTCP

  1. Copiez le fichier à la fois sur le serveur (DB) et sur le client (serveur d'applications/PC client)
    • Démarrez-le sur le serveur et le client
    • Au serveur :remplissez le nom de l'ordinateur netbios client et essayez de configurer une connexion DTC
    • Redémarrez les deux applications.
    • Chez le client :remplissez le nom de l'ordinateur netbios du serveur et essayez de configurer une connexion DTC

J'ai rencontré de nombreux problèmes tarifaires dans notre ancien réseau d'entreprise et j'ai quelques conseils :

  • si vous recevez le message d'erreur "Gethostbyname a échoué", cela signifie que l'ordinateur ne peut pas trouver l'autre ordinateur par son nom netbios.Le serveur pourrait par exemple résoudre et envoyer un ping au client, mais cela fonctionne au niveau DNS.Pas au niveau de la recherche Netbios.L'utilisation de serveurs WINS ou la modification du LMHOST (sale) résoudra ce problème.
  • si vous obtenez une erreur « Accès refusé », les paramètres de sécurité ne correspondent pas.Vous devez comparer l'onglet de sécurité du msdtc et faire correspondre le serveur et le client.Une autre chose à considérer est le Restreindre les clients distants valeur.En fonction de la version de votre OS et surtout du Service Pack, cette valeur peut être différente.
  • Autres problèmes de connexion :
    • Le pare-feu entre le serveur et le client doit autoriser la communication sur le port 135.Et plus important encore, la connexion peut être établie à partir des deux sites (j'ai eu beaucoup de problèmes avec les responsables du pare-feu de mon entreprise car ils pensaient que seul le serveur ouvrirait une connexion sur ce port)
    • Le protocole renvoie un port aléatoire auquel se connecter pour la communication de transaction réelle.Les utilisateurs de pare-feu n'aiment pas ça, ils aiment restreindre les ports à une certaine plage.Vous pouvez restreindre la génération de port dynamique RPC à une certaine plage à l'aide des touches décrites dans Comment configurer l'allocation de port dynamique RPC pour fonctionner avec les pare-feu.

D'après mon expérience, si le DTCPing est capable d'établir une connexion DTC initiée depuis le client et initiée depuis le serveur, vos transactions ne sont plus le problème.

Peut également voir ici sur la façon d'activer MSDTC à partir des services.msc du panneau de configuration.

Sur le serveur où réside le déclencheur, vous devez activer le service MSDTC.Vous pouvez le faire en cliquant sur DÉMARRER > PARAMÈTRES > PANNEAU DE CONTRÔLE > OUTILS ADMINISTRATIFS > SERVICES.Recherchez le service appelé «Coordonnateur de transaction distribué» et cliquez avec le bouton droit (Sélectionnez)> Démarrer.

MSDTC doit être activé sur les deux systèmes, serveur et client.
Assurez-vous également qu'il n'y a pas de pare-feu entre les systèmes qui bloque RPC.
Test DTCT est une jolie petite application qui vous aide à résoudre tout autre problème.

@Dan,

Ne dois-je pas avoir besoin de MSDTC activé pour que les transactions fonctionnent?

Uniquement les transactions distribuées : celles qui impliquent plus d’une seule connexion.Assurez-vous doublement que vous n'ouvrez qu'une seule connexion au sein de la transaction et que celle-ci ne s'aggravera pas - les performances seront également bien meilleures.

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