Anteriormente hemos aprendido a utilizar entornos transaccionales o Transaction Scopes. El ejemplo anterior mostraba lo que se conoce como una ‘transacción ligera’ que afecta a varias tablas de una misma fuente de datos. Sin embargo, en numerosas ocasiones se nos presentará la dificultad añadida de trabajar con múltiples fuentes de datos localizadas incluso en puntos geográficos diversos.
Para solventar esta dificultad, el propio Windows nos ofrece la posibilidad de utilizar las llamadas Transacciones distribuidas. Por defecto aparecen deshabilitadas, por lo que a continuación, mostraremos cómo activarlas. Una vez activadas, utilizaremos la clase TransactionScope como si se tratara de una transacción ligera, dejando en manos del sistema operativoel control de la propia transacción.
Para comenzar acudiremos a [Panel de Control] > [Herramientas Administrativas] > [Servicios de Componentes].
Una vez aquí, haremos click derecho sobre «Mi PC» y seleccionaremos la opción [Propiedades].
A continuación, seleccionamos la pestaña MSDTC, que no es otro componente que el coordinador de transacciones distribuidas de Microsoft (MicroSoft Distributed Transaction Coordinator). Aquí seleccionaremos la opción [Configuración de la transacción] haciendo click sobre el botón [Configuración de seguridad…]
En éste menú configuraremos la seguridad de la forma mostrada: habilitando el acceso a DTC desde la red y las transacciones XA.
A continuación, acudimos al SQL Server Configuration Manager para gestionar la configuración de nuestra base de datos SQL Server (en este caso concreto, SQL Server 2005).
Aquí seleccionaremos los servicios de SQL Server, haciendo click derecho sobre el Agente SQL Server y seleccionando [Propiedades].
Para que en los sucesivos reinicios el agente se inicie de forma automática, seleccionaremos la pestaña [Servicio] y marcaremos en [Modo de inicio] la opción [Automático].
A continuación, si no tenemos iniciado el agente, lo arrancaremos pulsando el botón [Iniciar] en la pestaña [Iniciar sesión].
Por último, haremos click derecho sobre el Coordinador de transacciones (alojado en el subárbol ‘Servicios’) y pulsaremos [Propiedades]
En la pestaña [General], seleccionaremos también el Tipo de inicio [Automático], con lo que el coordinador de transacciones distribuidas estará presente en el próximo reinicio.
Hecho esto, al utilizar un TransactionScope seremos capaces de incluir llamadas a diversas fuentes de datos, pues el propio MSDTC se encargará de manejarlas de forma completamente transparente al usuario.