none
MSDTC Coordinador de transacciones distribuidas RRS feed

  • Pregunta

  • Tengo 67 bases de datos distribuidas y necesito realizar una consulta update en las 67 o en ninguna en caso de que tenga algún detalle, para esto estoy usando el transactionscope de .NET, el error se da cuando he procesado 64 de las 67 sucursales porque en la sucursal 65 me marca "Error de comunicación con el servidor subyacente" sin importar el orden en que lo ejecute por lo cual pareciera que solo puede controlar 64 conexiones como máximo... es correcto?
    lunes, 29 de junio de 2015 15:27

Todas las respuestas

  • En cualquier caso, es una barbaridad hacer una transacción distribuida que abarque 67 servidores. En cuanto se produzca un error en la comunicación con cualquiera de ellos la transacción se quedará en un estado indeterminado y habrá que resolverla a mano en cada uno de los 67.

    En lugar de eso, simula manualmente una especie de "commit en dos fases" sobre los distintos servidores: Manda los cambios a cada uno guardándoles algún tipo de marca que sea algo así como "cambio provisional", y si todos acaban sin error, mándales a todos que el flag de "provisional" lo cambien por "definitivo". Si alguno da un error, manda un comando que borre todos los cambios provisionales. Sí, esto es más complicado que usar la transacción distribuida, sobre todo si esos cambios son complejos y afectan a varias tablas, pero va a ser necesario si quieres que no se te quede el conjunto de servidores en un estado indeterminado en cuanto que se produzca algún fallo de comunicación con cualquiera de ellos (y cuantos más servidores hay, más probable es que se produzca un fallo en alguno).

    martes, 30 de junio de 2015 5:03