sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo sincronizar dos (o n) procesos de replicación para bases de datos de SQL Server?

Parece que esa tarea dada no se puede resolver con las restricciones dadas. Si lo entendí correctamente, la cantidad de bases de datos y el esquema de fila son constantes.

Entonces, variables que quedaron:

  • "Inyecciones" adicionales a la base de datos
  • Trucos temporales
  • Trucos de disparadores
  • "Enlace tardío" de cambios, que no se replicaron a tiempo

Actualmente, solo he encontrado una idea que parece funcionar:

  1. Agregue un disparador en la tabla "Líneas", para modificar la marca de tiempo del registro "Pedido" (last_line_time)
  2. En la réplica, espere hasta que aparezca una línea con tiempo igual a last_line_time.
    • Si max(lines.line_time)> order.last_line_time entonces el pedido está obsoleto
    • Si max(lines.line_time)
    • Si max(lines.line_time) ==order.last_line_time entonces todo está bien, por ahora :)

Pero, este caso puede fallar en un bucle infinito, si las líneas se modifican constantemente y la réplica de la tabla de líneas siempre se queda atrás.