Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come sincronizzare due (o n) processi di replica per i database di SQL Server?

Sembra che un determinato compito non possa essere risolto con determinati vincoli. Se ho capito bene, il numero di database e lo schema di riga sono costanti.

Quindi, variabili che sono rimaste:

  • Ulteriori "iniezioni" al database
  • Trucchi temporali
  • Trigger Trigger
  • "Legatura tardiva" delle modifiche, replicate non in tempo

Al momento, ho trovato solo un'idea, che sembra funzionare:

  1. Aggiungi un trigger nella tabella "Righe", per modificare il timestamp del record "Ordine" (last_line_time)
  2. Nella replica, attendi che venga visualizzata una riga con tempo, uguale a last_line_time.
    • Se max(lines.line_time)> order.last_line_time di order è obsoleto
    • Se max(lines.line_time)
    • Se max(lines.line_time) ==order.last_line_time allora va tutto bene, per ora :)

Ma questo caso può fallire in un ciclo infinito, se le linee vengono costantemente modificate e la replica della tabella delle linee è sempre in ritardo.