Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Clave Única (Servidores Replicados)

Estas en el tema de Clave Única (Servidores Replicados) en el foro de SQL Server en Foros del Web. Estimados DBA: Intento crear un desencadenante para mantener un Código Único. Facturas.ID_FACTURA (PK) autoinc Facturas.CODIGO (ix) índice único, generado en AFTER_INSERT Facturas.CODIGO funciona perfectamente hasta ...
  #1 (permalink)  
Antiguo 23/09/2011, 02:21
 
Fecha de Ingreso: junio-2007
Mensajes: 41
Antigüedad: 16 años, 10 meses
Puntos: 0
Clave Única (Servidores Replicados)

Estimados DBA:

Intento crear un desencadenante para mantener un Código Único.

Facturas.ID_FACTURA (PK) autoinc
Facturas.CODIGO (ix) índice único, generado en AFTER_INSERT

Facturas.CODIGO funciona perfectamente hasta que... la base de datos pasa a pertenecer a un Servidor Replicado.

Se están produciendo inserciones en los dos servidores, ... he intentado varias cosas, vincularlos para desde el desencadenante tener acceso a los dos servidores, ... más, pero nada me funciona correctamente.

¿Algún consejo de como mantener un Desencadenante AFTER_INSERT en el que generamos valores únicos, cuando los servidores están replicados?


Muchas gracias por adelantado.
Un cordial saludo.
Ángel I.
  #2 (permalink)  
Antiguo 23/09/2011, 07:37
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Clave Única (Servidores Replicados)

Primeramente que modelo de replicacion estas utilizando??? Un trigger en este caso solo funcionaria para el servidor en el que esta instalado y si tienes una replicacion el trigger no afectaria a los 2 servidores, aqui podrias poner el trigger en ambos lados, pero ahi entra el detalle como generaria el siguiente Id?? ademas de que tendrias que ver el nivel de aislamiento necesario para evitar las lecturas fantasmas o las lecturas repeditas de tu base de datos. Lo que podrias hacer seria tener una tabla que vaya guardando los consecutivos despues de un after insert y que cada server consulte esa tabla o esto no es posible??

Saludos!!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 25/09/2011, 07:15
 
Fecha de Ingreso: junio-2007
Mensajes: 41
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Clave Única (Servidores Replicados)

Gracias por tú respuesta.

Estoy intentando montar una réplica de mezcla.
El Servidor 1 realiza las funciones de Publicador/Distribuidor (auque tambien se realizan transacciones en él) Suscriptor de si miso?.
El Servidor 2 es un Suscriptor.

Al insertar en cualquiera de los dos equipos ( El trigger se ha propagado al segundo servidor, además es necesario para calcular, la replica mantiene metadatos ) se desencadena un AFTER_INSERT que mira en los dos servidores cual es el MAX(CODIGO) y calcula el siguiente, realizando un UPDATE sobre ese campo.

La idea que me das de una tabla paralela que contenga todos los códigos, me parece super interesante. La probaré esta semana. Muchas gracias.

El cálculo del siguiente código funciona bien, el problema es cuando se realiza la ejecución de transacciones de los dos servidores, debido a :
Si insertamos en Servidor 1, cuando se ejecutan las transacciones se empieza e insertar en Servidor 2 (y se vuelve a disparar el AFTER_INSERT), de ahí la generación de conflictos. ¿No existirá forma de indicar en el desencadenante que eso no es una inserción en si mismo, sino una actualización de transacciones de otro servidor?

Un cordial saludo.
Ángel I.

Etiquetas: clave, servidores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:26.