ERROR EN TRANSACCIÓN CON 3 CONEXIONES

14/12/2004 - 08:28 por -=JOE MAN=- | Informe spam
Hola

Tengo un ASP que modifica 3 tablas en distintos servidores SQL de la
red. Tiene que ejecutarse en una transacción para que si falla algo las
tres tablas (cada una en un servidor) sean idénticas y se mantengan
idénticas.

Abro tres conexiones (cn1,cn2,cn2), una por cada servidor SQL.

Pongo <%@Transaction="Required"%> pero me da error en la transacción.
¿varias conexiones a servidores distintos no permiten transacciones?

¿cómo podría hacerlo?

gracias

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
14/12/2004 - 09:41 | Informe spam
Yo lo implementaría mediante triggers, así en tu asp sólo tienes que
actualizar una de las bases de datos. Eso si, ten en cuenta que si falla un
servidor se produce un rollback de toda la transacción y no podrás
actualizar datos en ninguno de ellos.

Y te propongo otra alternativa aún mejor. Utilizaría replicación
(duplicación) transaccional, con actualización inmediata. Así te olvidas de
escribir código. Aunque seguirías teniendo el problema de que si falla la
actualización en un servidor, se deshace la transacción y no se actualiza
ninguno de los tres.

Si es un requisito que deban estar los tres actualizados en todo momento
esas son las alternativas que te propongo, ahora si se pueden producir
ciertos problemas de conectividad y quieres que aun así se pueda seguir
trabajando y cuando se recupere la conectividad que se sincronicen, te
recomiendo la repliación transaccional con actualización en cola.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"-=JOE MAN=-" escribió en el mensaje
news:%
Hola

Tengo un ASP que modifica 3 tablas en distintos servidores SQL de la
red. Tiene que ejecutarse en una transacción para que si falla algo las
tres tablas (cada una en un servidor) sean idénticas y se mantengan
idénticas.

Abro tres conexiones (cn1,cn2,cn2), una por cada servidor SQL.

Pongo <%@Transaction="Required"%> pero me da error en la transacción.
¿varias conexiones a servidores distintos no permiten transacciones?

¿cómo podría hacerlo?

gracias
Respuesta Responder a este mensaje
#2 -=JOE MAN=-
14/12/2004 - 12:52 | Informe spam
Ya lo pensé.
E incluso intenté que uno de ellos fuera publicador o incluso hacer
replicación pero no pude configurarlo adecuadamente. No logré hacer
funcionar el sistema, creo que por circunstancias de la red.
Salvador Ramos wrote:
Yo lo implementaría mediante triggers, así en tu asp sólo tienes que
actualizar una de las bases de datos. Eso si, ten en cuenta que si falla un
servidor se produce un rollback de toda la transacción y no podrás
actualizar datos en ninguno de ellos.

Y te propongo otra alternativa aún mejor. Utilizaría replicación
(duplicación) transaccional, con actualización inmediata. Así te olvidas de
escribir código. Aunque seguirías teniendo el problema de que si falla la
actualización en un servidor, se deshace la transacción y no se actualiza
ninguno de los tres.

Si es un requisito que deban estar los tres actualizados en todo momento
esas son las alternativas que te propongo, ahora si se pueden producir
ciertos problemas de conectividad y quieres que aun así se pueda seguir
trabajando y cuando se recupere la conectividad que se sincronicen, te
recomiendo la repliación transaccional con actualización en cola.

Respuesta Responder a este mensaje
#3 Salvador Ramos
14/12/2004 - 13:36 | Informe spam
Qué tipo de red tienes: LAN, WAN... que ancho de banda ... la conexión es
permanente y funciona sin problema ...
nos puedes dar más información ? Describenos el entorno, así intentaremos
aportar ideas y soluciones.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"-=JOE MAN=-" escribió en el mensaje
news:
Ya lo pensé.
E incluso intenté que uno de ellos fuera publicador o incluso hacer
replicación pero no pude configurarlo adecuadamente. No logré hacer
funcionar el sistema, creo que por circunstancias de la red.
Salvador Ramos wrote:
> Yo lo implementaría mediante triggers, así en tu asp sólo tienes que
> actualizar una de las bases de datos. Eso si, ten en cuenta que si falla


un
> servidor se produce un rollback de toda la transacción y no podrás
> actualizar datos en ninguno de ellos.
>
> Y te propongo otra alternativa aún mejor. Utilizaría replicación
> (duplicación) transaccional, con actualización inmediata. Así te olvidas


de
> escribir código. Aunque seguirías teniendo el problema de que si falla


la
> actualización en un servidor, se deshace la transacción y no se


actualiza
> ninguno de los tres.
>
> Si es un requisito que deban estar los tres actualizados en todo momento
> esas son las alternativas que te propongo, ahora si se pueden producir
> ciertos problemas de conectividad y quieres que aun así se pueda seguir
> trabajando y cuando se recupere la conectividad que se sincronicen, te
> recomiendo la repliación transaccional con actualización en cola.
>
Respuesta Responder a este mensaje
#4 Javier Loria
14/12/2004 - 14:28 | Informe spam
Hola:
A diferencia de Salvador, yo lo mantendria como lo estas haciendo.
Algunas ideas:
a) Esta el MS DTC corriendo? El Coordinador de transacciones
distribuidas es requisito para lo que estas haciendo. Revisa en el SQL
Service Manager si esta iniciados los servicios.
b) Si estan corriendo los DTC, hay firewalls de por medio? Si es asi MS
tiene una herramienta llamada DTCPing pra verificar la conectividad. Revisa
http://support.microsoft.com/defaul...-us;306843
c) Esta llamando SetComplete?. Revisa el siguiente link:
http://support.microsoft.com/kb/q299638/

Suerte,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"-=JOE MAN=-" wrote in message
news:#
Hola

Tengo un ASP que modifica 3 tablas en distintos servidores SQL de la
red. Tiene que ejecutarse en una transacción para que si falla algo las
tres tablas (cada una en un servidor) sean idénticas y se mantengan
idénticas.

Abro tres conexiones (cn1,cn2,cn2), una por cada servidor SQL.

Pongo <%@Transaction="Required"%> pero me da error en la transacción.
¿varias conexiones a servidores distintos no permiten transacciones?

¿cómo podría hacerlo?

gracias
Respuesta Responder a este mensaje
#5 -=JOE MAN=-
15/12/2004 - 12:41 | Informe spam
Gracias por la ayuda.
al fin lo solucioné con disparadores (trigger) en la tabla principal.


Javier Loria wrote:
Hola:
A diferencia de Salvador, yo lo mantendria como lo estas haciendo.
Algunas ideas:
a) Esta el MS DTC corriendo? El Coordinador de transacciones
distribuidas es requisito para lo que estas haciendo. Revisa en el SQL
Service Manager si esta iniciados los servicios.
b) Si estan corriendo los DTC, hay firewalls de por medio? Si es asi MS
tiene una herramienta llamada DTCPing pra verificar la conectividad. Revisa
http://support.microsoft.com/defaul...-us;306843
c) Esta llamando SetComplete?. Revisa el siguiente link:
http://support.microsoft.com/kb/q299638/

Suerte,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"-=JOE MAN=-" wrote in message
news:#

Hola

Tengo un ASP que modifica 3 tablas en distintos servidores SQL de la
red. Tiene que ejecutarse en una transacción para que si falla algo las
tres tablas (cada una en un servidor) sean idénticas y se mantengan
idénticas.

Abro tres conexiones (cn1,cn2,cn2), una por cada servidor SQL.

Pongo <%@Transaction="Required"%> pero me da error en la transacción.
¿varias conexiones a servidores distintos no permiten transacciones?

¿cómo podría hacerlo?

gracias





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida