none
Evitar carga duplicada de datos entre sucursales RRS feed

  • Pregunta

  • Hay tablas que se alimentan desde central (tablas maestras, por ej tarjetas, bancos, etc) y se replican hacia las sucursales, y logicamente, tablas que no son maestras que se replican desde las sucursales a casa central (por ej facturas, remitos, etc). Con este esquema, las sucursales trabajan tranquilamente sin depender de la conexión con casa central, ya que si hubiera un corte con la misma, los datos se replicarian cuando haya conexion entre publicador/suscriptor.

    Ahora el dilema que se me viene en mente, es como podría abordarse la problematica de carga de clientes, siendo que estos funcionarian en adm. central como tabla maestra, pero deben ser cargados por cada sucursal a medida que llegan por primera vez a las mismas, y luego replicarse a adm. central, quien a su vez los volveria a todas las sucursales (una vez replicado a adm. central funcionarian como cual. otra tabla maestra replicando al resto de sucursales).

    Hasta ahí todo bien, el problema es evitar que dos sucursales carguen un mismo cliente antes de que se hayan replicado a central, algo poco probable, ya que implicaria que un cliente vaya a dos sucursales el mismo dia con pocas horas de dif...pero podria darse por error de tipeo x ej, por lo que no vendria mal evitarlo.

    Entonces, Como harían para que un cliente se cargue solo una vez a nivel empresa?

    viernes, 27 de octubre de 2017 21:29

Respuestas

  • 1. Si, la tabla clientes iría de server a clientes y la otra al revés. 

    2.-  Si, si idcliente =-1 quiere decir que todavía es un cliente "temporal", que en algún momento se actualizará. 

    3.- unido a lo anterior, tendré facturas con idcliente=-1, idclientetemporal=xxx ahora pudes hacer un update de forma que los que tienen idcliente=-1 se actualicen con el valor idcliente de la tabla clientes que se corresponda con clientetemporal. 

    para que sean distintas en la tabla clientetemporal puede ser que sean dos campos, idsucursal,idclientetemporal. 


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    lunes, 30 de octubre de 2017 16:26
    Moderador

Todas las respuestas

  • Si tienes algún registro tipo Cédula o lo que sea que identique que realmente es el mismo cliente, lo que yo haría es :

    Crear una tabla Clientes_Altas_sucursal, idéntica a clientes pero tratada como si fuera una tabla de facturas o remitos, es decir la dirección de réplica es sucursal->central.

    Esa tabla para mi tendría un carácter temporal, sea con un paquete SSIS, sea con un trigger, o con un procedimiento almacenado que se ejecuta cada minuto, consolidaría la tabla clientes_altas_sucursal en la tabla clientes. La única diferencia es que un alta en la tabla clientes Altas Sucursal puede suponer simplemente un update en la tabla clientes.

    Para las operaciones, guardaría los dos valores de clave, idcliente, idclientetemporalsucursal,  inicialmente idcliente se grabaría a -1 en la operación. puesto que esta en ese estado temporal. 

    Tan pronto como el cliente llegue a la sucursal via replicación de la tabla principal, actualizaría las tablas cuyo idclientetemporal haya obtenido un idcliente, de esta forma creo que evitarías esas duplicidades.

    Saludos


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    sábado, 28 de octubre de 2017 7:56
    Moderador
  • Hola...muchas gracias por tu ayuda. Me quedaron unas dudas:

    1) CITA: "Crear una tabla Clientes_Altas_sucursal, idéntica a clientes pero tratada como si fuera una tabla de facturas o remitos, es decir la dirección de réplica es sucursal->central."

      Entonces en las sucursales existirian ambas tablas: "Clientes" y "Clientes_Altas_sucursal" ¿Es Correcto?

    2) CITA: "Para las operaciones, guardaría los dos valores de clave, idcliente, idclientetemporalsucursal,  inicialmente idcliente se grabaría a -1 en la operación. puesto que esta en ese estado temporal. "

    ¿Por ej la estructura de las tablas sería algo asi?:

      tbl_factura (idcliente - id_idclientetemporalsucursal - fecha - importe...etc)

    3) No me quedó muy claro lo  siguiente: "Tan pronto como el cliente llegue a la sucursal via replicación de la tabla principal, actualizaría las tablas cuyo idclientetemporal haya obtenido un idcliente"

    Gracias!

    lunes, 30 de octubre de 2017 12:12
  • 1. Si, la tabla clientes iría de server a clientes y la otra al revés. 

    2.-  Si, si idcliente =-1 quiere decir que todavía es un cliente "temporal", que en algún momento se actualizará. 

    3.- unido a lo anterior, tendré facturas con idcliente=-1, idclientetemporal=xxx ahora pudes hacer un update de forma que los que tienen idcliente=-1 se actualicen con el valor idcliente de la tabla clientes que se corresponda con clientetemporal. 

    para que sean distintas en la tabla clientetemporal puede ser que sean dos campos, idsucursal,idclientetemporal. 


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    lunes, 30 de octubre de 2017 16:26
    Moderador
  • Muchas gracias por tu ayuda!!
    lunes, 30 de octubre de 2017 22:46