web-dev-qa-db-fra.com

MSDTC et sa relation avec SQL Server

Donc, je fais des recherches sur MSDTC et son rôle qu'il fait ou ne joue pas dans différents types d'appels dans SQL Server, et cela m'a fait penser aux questions suivantes:

  1. Y a-t-il des alternatives/remplaçants tierces pour MSDTC (s'ils existent) et leur avr.

  2. Le DTC est-il entré en jeu lorsque je vous interroge simplement une seule table (CRUD ou SELECT) via un serveur lié?

  3. MSDTC est-il requis pour la réplication transactionnelle? Je connais des abonnements à la mise à jour nécessitent MSDTC, mais pas clair si des abonnements non mis à jour ont besoin/utiliser MSDTC.

De Googling, je n'arrive pas à trouver de bonnes réponses à ces questions, alors tournant vers la communauté ici. Toute aide pour améliorer ma compréhension de la MSDTC est grandement appréciée.

Merci!

4
Chinesinho

MSDTC fournit des services de gestion des transactions pour les applications. Il peut agir en tant que gestionnaire de transactions régulier ou un gestionnaire de ressources compatible XA. SQL Server est l'application bien connue qui utilise DTC, mais ce n'est pas vraiment une fonctionnalité SQL Server ou même un composant. La MSDTC est vraiment destinée à fournir une gestion des transactions pour deux ressources distinctes ou plus pour assurer la cohérence transactionnelle. La gestion des transactions est intégrée à SQL Server pour une seule ressource/une base de données, mais il ne traite actuellement pas de multiples ressources. Voir Cet ancien blog MSDTC pour une description plus détaillée. Le contenu est vraiment vieux mais les concepts sont toujours exacts.

Quant à vos questions,

  1. Il existe de nombreux autres gestionnaires de transactions, mais SQL Server est intégré à DTC par défaut par défaut (par exemple, démarrez votre requête avec BEGIN DISTRIBUTED TRANSACTION Enlève automatiquement DTC en tant que gestionnaire de transactions). Si vous utilisez JDBC, vous pouvez également configurer SQL Server pour prendre en charge XA en installant le composant XA à partir du package JDBC. Il y a un pilote et un script d'installation pour le faire (tout dans l'emballage). Qui définit certains XPS pour fournir un support de transaction XA. Il peut y avoir autre TMS là-bas pour SQL Server, mais je ne les ai pas rencontrés.
  2. Oui, cela peut, dépend de ce que vous faites. DQ peut enrôler DTC pour gérer les transactions (il faut promouvoir automatiquement à une DT) si nécessaire. Par exemple. En savoir que seules les opérations ne seront pas mais n'écrivez pas.
  3. La réplication transactionnelle sans abonnements mis à jour ne nécessite pas de MSDTC. Il est basé sur le journal et quelle que soit la poussée ou la traction, il n'y a pas de concept de transactions distribuées.
4
SQLmojoe