Comment activer MSDTC sur SQL Server?
est-ce une question valable? J'ai une application Windows .NET qui utilise MSTDC et qui fait exception:
Système.Transaction.TransactionManagerCommunicationException: L'accès au réseau pour Distributed Transaction Manager (MSDTC) a été désactivé. Veuillez activer DTC pour accès au réseau dans la configuration de sécurité pour MSDTC en utilisant L'outil D'Administration des services de composants ---> système.Runtime.InteropServices.COMException (0x8004D024): Le gestionnaire de transactions a désactivé son soutien à distance/réseau transaction. (Exception de HRESULT: 0x8004D024) au système.Transaction.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, Intptredi managdentifier, Guid& transactionIdentifier, OletxTransactionIsolationLevel& isolationLevel, ITransactionShim& 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?
6 réponses
utilisez ceci pour windows Server 2008 r2 et Windows Server 2012 R2
-
cliquez sur Start , cliquez sur Run , tapez dcomcnfg puis cliquez sur OK pour ouvrir Component Services .
-
dans l'arbre de la console, cliquez pour agrandir Component Services , Cliquez pour agrandir Ordinateurs , cliquez sur Mon Ordinateur , cliquez sur Distributed Transaction Coordinator puis cliquez sur "151960920 Locales" DTC .
-
clic droit DTC Local et cliquez sur propriétés pour afficher la boîte de dialogue propriétés DTC locales .
-
Cliquez sur l'onglet sécurité .
-
cocher la Case "l'Accès DTC Réseau" case à cocher.
-
cochez finalement la case "Allow Inbound" et "Allow Outbound" cases à cocher.
-
, Cliquez sur Appliquer , OK .
-
un message apparaîtra à propos de redémarrage le service.
-
, Cliquez sur OK et C'est tout.
référence: https://msdn.microsoft.com/en-us/library/dd327979.aspx
Note: parfois le pare-feu du réseau sur L'ordinateur Local ou le serveur pourrait interrompre votre connexion alors assurez-vous de créer des règles pour "Autoriser L'arrivée" et "Autoriser L'arrivée" connexion pour c:\windows\msdtc.exe
avez-vous besoin de MSDTC? L'escalade que vous rencontrez est souvent causée par la création de connexions multiples à l'intérieur d'un seul champ de transactions.
si vous en avez besoin, vous devez l'activer comme indiqué dans le message d'erreur. Sur XP:
- passer à outils administratifs - > Services composants
- Développez Services De Composants -> Ordinateur ->
- clic droit - > Propriétés - > onglet MSDTC
- appuyez sur le bouton de Configuration de sécurité
j'ai trouvé que la meilleure façon de déboguer est d'utiliser l'outil de microsoft appelé DTCPing
- copier le fichier à la fois le serveur (DB) et le client (Application server / client pc)
- Démarrer le serveur et le client
- sur le serveur: remplissez le nom de l'ordinateur client netbios et essayez de configurer une connexion DTC
- redémarrez les deux applications.
- au client: remplissez le nom de l'ordinateur serveur netbios et essayez de configurer une connexion DTC
j'ai eu des problèmes de transport dans notre ancien réseau d'entreprise, et j'ai quelques conseils:
- si vous obtenez le message d'erreur "gethostbyname failed" cela signifie que l'ordinateur ne peut pas trouver l'autre ordinateur par son nom netbios . Le serveur pourrait par exemple résoudre et ping le client, mais ça marche au niveau DNS. Pas au niveau de NetBIOS. Utiliser les serveurs WINS ou changer le LMHOST (dirty) résoudra ce problème.
- si vous avez une erreur" Accès refusé", les paramètres de sécurité ne correspondent pas. Vous devriez comparer l'onglet sécurité pour le dtc et le serveur et le client de match. Une autre chose à regarder est la valeur RestrictRemoteClients . En fonction de votre version OS et surtout du Service Pack, ceci la valeur peut être différente.
- autres problèmes de connexion:
- le pare-feu entre le serveur et le client doit permettre la communication sur le port 135. Et plus important encore, la connexion peut être initiée à partir des deux sites (j'ai eu beaucoup de problèmes avec les gens du pare-feu dans mon entreprise parce qu'ils pensaient que seul le serveur ouvrirait une connexion sur ce port)
- le protocole renvoie un port aléatoire pour se connecter au communication des transactions. Les gens du pare-feu n'aiment pas ça, ils aiment restreindre les ports à une certaine portée. Vous pouvez restreindre la génération du port dynamique RPC à une certaine plage en utilisant les clés décrites dans comment configurer L'allocation du port dynamique RPC pour travailler avec les pare-feu .
d'après mon expérience, si le DTCPing est capable de configurer une connexion DTC initialisée à partir du client et initialisée à partir du serveur, vos transactions ne sont pas le problème.
peut également voir ici sur la façon d'activer MSDTC à partir des services du Panneau de configuration.MSC.
sur le serveur où réside la gâchette, vous devez tourner le MSDTC service sur. Vous pouvez le faire en cliquant sur Démarrer > Paramètres > Panneau de configuration > Outils administratifs > SERVICES. Trouver le service appelé "coordinateur des transactions distribuées" et clic droit (sur elle et sélectionnez) > Démarrer.
@Dan,
N'ai-je pas besoin de ms dtc est activé pour les transactions de travail?
seulement les transactions distribuées - celles qui impliquent plus d'une connexion. Assurez - vous que vous n'ouvrez qu'une seule connexion dans le cadre de la transaction et que celle-ci ne s'intensifiera pas-la Performance sera bien meilleure aussi.
MSDTC doit être activé sur les deux Systèmes, serveur et client.
De plus, assurez-vous qu'il n'y a pas de pare-feu entre les systèmes qui bloque RPC.
DTCTest est une application litt agréable qui vous aide à résoudre tous les autres problèmes.