none
Conflicto con MSDTC y Windows Server 2008 RRS feed

  • Pregunta

  • Hola a todos.
    Tengo 2 servidores (uno de aplicaciones y otro de base de datos) con Windows Server 2008 R2 y SQL Server 2008 R2, tengo instalada una aplicación desarrollada con C# .NET Framework 2.0 y 2 Bases de Datos, hago uso de TransactionScope para manejar Insert, Update, Delete, si yo ejecuto estas operaciones en una sola Base de Datos todo termina perfecto pero si yo ejecuto estas dos operaciones en las 2 bases de datos comienzo a tener problemas con TransactionScope, (este conflicto no se presenta si instalo mi aplicación en el mismo servidor que el de Base de Datos, ya ejecuté una configuración de MSDTC en ambos servidores pero no puedo resolver mi problema, tengo el Firewall activo, no se si esto también causa conflicto.
    Espero puedan ayudarme con este problema.
    Gracias y saludos.
    miércoles, 21 de junio de 2017 4:33

Respuestas

Todas las respuestas

  • Si es una aplicación distribuida que rueda en un PC y llama a dos servidores, para usar el transactionscope se necesita que el servicio DTS esté rodando en las TRES máquinas. Y se necesita que los tres DTCs puedan comunicarse entre si, por lo que es necesario abrir en los Firewall el paso para el DTC:

    https://technet.microsoft.com/en-us/library/cc725913(v=ws.10).aspx

    miércoles, 21 de junio de 2017 6:26
  • Hola, gracias por responder.

    La aplicación está instalada en uno de los servidores (Es web, fue mi error no haberlo aclarado), entonces por lo que entiendo, el Servicio de DTS debe estar en ejecución en ambos servidores y el Firewall debe permitir la ejecución del DTC, pero la configuración del Firewall debe hacerse en ambos servidores ¿Es correcto?

    Muchas gracias por tu ayuda. Saludos.

    jueves, 22 de junio de 2017 5:21
  • Correcto. En ese caso, inicia el servicio DTC en los dos servidores y abre el paso en el firewall en ambos.
    jueves, 22 de junio de 2017 6:51
  • Gracias de nuevo por tu respuesta, para abrir el paso en el firewall, con agregar "msdtc.exe" basta o hay algún puerto adicional que activar.

    Saludos.

    viernes, 23 de junio de 2017 5:12
  • con agregar "msdtc.exe" basta

    Deberia de bastar, suponiendo que el firewall sea lo bastante inteligente para detectar sobre la marcha cual es el puerto que esta usando el DTC. Si no fuera asi, la cosa se complica un poco, porque el DTC usa un puerto que escoge al azar entre 1024 y 65535 (ademas del 135 que siempre es fijo). Asi que si necesitas abrir el puerto expresamente (si el firewall no lo detecta automaticamente), primero hay que reconfigurar el DTC para forzarlo a escoger un puerto dentro de un rango limitado, y luego abrir ese rango en el firewall.

    https://fairwaytech.com/2012/12/distributed-transaction-coordinators-port-135-and-firewalls-oh-my/

    viernes, 23 de junio de 2017 7:29
  • Ya veo, con eso debería bastar entonces, así lo haré, muchas gracias por responder.
    martes, 27 de junio de 2017 5:13
  • Hola que tal, gracias por tus respuestas. Apliqué la configuración para MSDTC en ambos servidores y el servicio DTC está corriendo, ya puedo ejecutar las actividades (Insert, update, delete a dos BD)  sin el error inicial sin embargo, se están ejecutando muy lento y no se registra ningún error al respecto en mis archivos de log ¿Sabes cual podría ser la razón (Quizás algún parámetro de configuración que me faltó)

    La configuración aplicada para ambos servidores fue:

    (En la pestaña "Seguridad" de las propiedades de Local DTC)

    Check "Network DTC Access" marcado

    Check "Allow Remote Clients" y "Allow Remote Administration" marcados (Ya hice pruebas desmarcando estas dos opciones y el resultado es el mismo)

    Check "Allow Inbound" y "Allow Outbound" marcados

    Opción "No Authentication Required" seleccionada.

    Check "Enable SNA LU 6.2 Transactions" marcada.

    Saludos.

    lunes, 17 de julio de 2017 22:12
  • Listo, mi problema fue resuelto, era una cuestión propia del servidor.

    Saludos y gracias por sus respuestas.

    jueves, 20 de julio de 2017 16:59