Definitivamente creo que es la solucion... voy a tener que cambiar
varias cosas creo para hacerlo funcionar, despues les digo si tengo
algun problema.

Gracias!,
Diego

2008/7/4 Jose Mariano Alvarez <[EMAIL PROTECTED]>:
> Yo subiria los archivos mediante bulk insert a tablas auxiliares con un
> indice clustered. Trataria de que los datos dentro de los archivos vengan
> ordenados por ese indice clustered. Una vez en la base el proceso lo haria
> mediante un trigger de delete y aplicando transacciones por cada bloque de
> proceso, de esa manera me aseguro que se cumplen las reglas y que no me
> queda nada por procesar y ademas el proceso lo hago reenganchable (si se
> detiene lo pongo a correr de nuevo).
>
> Mediante este mecanismo, no tendrias bloqueo de tablas de destino ya que el
> bloqueo seria solo durante el bloque de proceso en lugar de todo el
> proceso completo y es muy probable que no te bloquee la tabla.
>
>
> --------------------------------
> Atte.
> Ing. Jose Mariano Alvarez
> SQL Total Consulting
>
>
> 2008/7/3 PabloC <[EMAIL PROTECTED]>:
>>
>> Hacelas sin miedo
>> Cualquier cosa chifla
>>
>> Saludos
>> PabloC
>>
>>
>> -----Mensaje original-----
>> De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Diego Jancic
>> Enviado el: Jueves, 03 de Julio de 2008 15:37
>> Para: pablo.canonico
>> Asunto: [dbms] Proceso sin bloqueos
>>
>> Gracias Pablo... suena bien... despues hago un par de pruebas.
>>
>> Saludos a todos!
>>
>> 2008/7/3 PabloC <[EMAIL PROTECTED]>:
>> > Diego, si el capo al que hace referencia Leonardo es Maxi o Mariano, yo
>> use
>> > algo que explicaron y dieron ejemplos en alguna charla y que es
>> exactamente
>> > lo que te comentan, funciona muy bien
>> >
>> > Saludos
>> > PabloC
>> >
>> > -----Mensaje original-----
>> > De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Diego Jancic
>> > Enviado el: Jueves, 03 de Julio de 2008 15:16
>> > Para: pablo.canonico
>> > Asunto: [dbms] Proceso sin bloqueos
>> >
>> > Wow!... Lindo tip!..
>> > Vere si es muy complicado de adaptar..
>> >
>> > Gracias!
>> >
>> > 2008/7/3 Leonardo Micheloni <[EMAIL PROTECTED]>:
>> >> Hay una solución más compleja que me contó un capo ;-)
>> >>
>> >> Subís todo a una tabla temporal (una tabla física pero que no se use)
>> >> con el bulk insert
>> >>
>> >> le ponés un trigger para delete (que se ejecuta antes del delete)
>> >>
>> >> con ese trigger hacés el insert/update/delete con una transacción, si
>> >> algo falla no se hace el delete que disparó el trigger
>> >>
>> >> en algún momento (no sé si tenés la posiblidad de hacer ese proceso
>> >> tipo
>> > batch)
>> >>
>> >> Te tiras un delete top 1000 (sql 2005 soporta TOP en el delete) por
>> >> ejemplo y se te van pasando y borrando los datos automáticamente.
>> >>
>> >> Seguro que quien me mostró esto te lo puede contar mejor, pero es un
>> >> gran
>> > truco.
>> >>
>> >> Saludos,
>> >>
>> >> 2008/7/3 Diego Jancic <[EMAIL PROTECTED]>:
>> >>> Hola,
>> >>>
>> >>> Leonardo: Creo que corte la explicacion por la mitad, lo que quiero
>> >>> hacer es meter todo dentro de una transaccion, y como la transaccion
>> >>> bloquea la tabla que usa mientras esta activa (la transaccion) me va a
>> >>> bloquear a todos los usuarios que quieran usar esta tabla.
>> >>>
>> >>> Hernan: Parece buena idea, a excepcion de performance. Para hacer lo
>> >>> que decis deberia usar un cursor o algo asi y creo que va a ser medio
>> >>> lento...
>> >>> Igual se me ocurre que podria hacer lo mismo que tengo ahora pero
>> >>> usando un TOP n y corriendolo varias veces (es decir, hacerlo en
>> >>> batches mas pequeños)
>> >>> Creo que de esa forma podria "calibrar" el tiempo que se bloquea, para
>> >>> equilibrar velocidad de import versus tiempo de tabla bloqueada.
>> >>>
>> >>> Gracias!
>> >>> Diego
>> >>>
>> >>> 2008/7/3 Hernán Zaldívar <[EMAIL PROTECTED]>:
>> >>>> Siempre que hagas un bulk va a bloquear todo y es por proteccion...
>> >>>> si
>> > le sacas el bloqueo se pueden producir errores no muy buenos...
>> >>>>
>> >>>> Y si actualizas uno a uno en vez de bulk? Uno a uno va bloqueando de
>> >>>> a
>> > un registro a la vez y soltandonlo cuando lo termina de usar.. esto es
>> > rapido
>> >>>>
>> >>>> -----Mensaje original-----
>> >>>> De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Leonardo
>> > Micheloni
>> >>>> Enviado el: Jueves, 03 de Julio de 2008 2:13 p.m.
>> >>>> Para: Hernán Zaldívar
>> >>>> Asunto: [dbms] Proceso sin bloqueos
>> >>>>
>> >>>> Hola Diego,
>> >>>>  No entiendo qué querés decir con "bloquear toda la aplicación web"
>> >>>>
>> >>>> On Thu, Jul 3, 2008 at 1:04 PM, Diego Jancic <[EMAIL PROTECTED]>
>> >>>> wrote:
>> >>>>> Hola gente!,
>> >>>>> Tengo un problema (posiblemente de diseño), tengo una app web que
>> >>>>> permite importar algunas cosas (usuarios, permisos, etc) desde csv.
>> >>>>> Ya
>> >>>>> esta funcionando todo en un proceso aparte, lo que se hace es:
>> >>>>> 1 - importar cada linea del csv a una tabla temporal, sin hacer
>> >>>>> mucho
>> >>>>> procesamiento
>> >>>>> 2 - ejecutar bulk inserts para los nuevos usuarios
>> >>>>> 3 - ejecutar bulk updates para actualizar los usuarios existentes
>> >>>>> 4 - ejecutar bulk inserts para los nuevos permisos
>> >>>>> 5 - ejecutar bulk updates para actualizar los permisos existentes
>> >>>>> 6 - ....
>> >>>>>
>> >>>>> Como puedo hacer para ejecutar los pasos 2, 3, 4, 5, ..., n sin
>> >>>>> bloquear a toda la aplicacion web ?
>> >>>>> Posiblemente tarde poco el import, pero bloquear todo durante
>> >>>>> algunos
>> >>>>> segundos no es muy bueno que digamos...
>> >>>>>
>> >>>>> Alguna idea?
>> >>>>>
>> >>>>> Gracias,
>> >>>>> Diego
>> >>>>>
>> >>>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> Leonardo Micheloni.
>> >>>> Ayudando a organizar las primeras jornadas ágiles de Latinoamérica
>> >>>>
>> >>>> http://agiles2008.org/
>> >>>>
>> >>>> Blog Personal
>> >>>>
>> >>>> http://leomicheloni.blogspot.com/
>> >>>>
>> >>>>
>> >>>>
>> >>>
>> >>>
>> >>
>> >>
>> >>
>> >> --
>> >> Leonardo Micheloni.
>> >> Ayudando a organizar las primeras jornadas ágiles de Latinoamérica
>> >>
>> >> http://agiles2008.org/
>> >>
>> >> Blog Personal
>> >>
>> >> http://leomicheloni.blogspot.com/
>> >>
>> >>
>> >
>> >
>> >
>> >
>>
>>
>>
>
>

Responder a