TRANSACCION

27/01/2004 - 23:36 por Sergio Cifuentes | Informe spam
QUIERO HACER UNA TRANSACCION PARA UN PROCESO DE FACTURACION YA Q SE VAN
GRABANDO DATOS A DIFERENTES TABLAS Y SI NO SE IMPRIME LA FACTURA SE DEBEN
ELIMINAR TODOS LOS DATOS PERO EL PROBLEMA ES QUE CUANDO INIICO LA
TRANSACCION BLOQUEA LA BDD Y LA DESBLOQUEA HASTA EL COMMIT O ROLLBACK DE LA
TRANSACCION ES POR EL TIPO DE TRANSACCION O Q?? Q TIPO ME ACONSEJAN USAR HE
BUSCADO EN LOS BOL PERO NO ME EXPLICAN MUY BIEN, GRACIAS.

Preguntas similare

Leer las respuestas

#1 Eladio Rincón
28/01/2004 - 00:09 | Informe spam
Hola Sergio,

yo modificaría el requerimiento: mira como lo tienes definido:
1- se inicia transacción,
2- procesas factura,
3- comienzas a imprimir,
4- acabas de imprimir,
5- se confirma transacción

entre 3 y 5 tienes un tiempo que depende de la velocidad de la impresora, de si la impresora tiene papel, de las páginas de la impresora, de si hay fallo de red, de si la impresora está conectada ... un montón de detalles que hacen que la transacción sea MUY larga; yo intentaría minimizar el tiempo que tiene qeu estar la transacción abierta (es decir, generando bloqueos);

no sé cual es la razón por la que decides dar por confirmada la factura si está impresa (supongo que serán cuestiones del diseño), pero intentaría tener registrado un estado previo a impresa.

Saludos,

Eladio Rincón
MCAD, SQL Server MVP
http://www.siquelnet.com

"Comparte lo que sabes, aprende lo que no sepas." FGG

"Sergio Cifuentes" escribió en el mensaje news:%
QUIERO HACER UNA TRANSACCION PARA UN PROCESO DE FACTURACION YA Q SE VAN
GRABANDO DATOS A DIFERENTES TABLAS Y SI NO SE IMPRIME LA FACTURA SE DEBEN
ELIMINAR TODOS LOS DATOS PERO EL PROBLEMA ES QUE CUANDO INIICO LA
TRANSACCION BLOQUEA LA BDD Y LA DESBLOQUEA HASTA EL COMMIT O ROLLBACK DE LA
TRANSACCION ES POR EL TIPO DE TRANSACCION O Q?? Q TIPO ME ACONSEJAN USAR HE
BUSCADO EN LOS BOL PERO NO ME EXPLICAN MUY BIEN, GRACIAS.


Respuesta Responder a este mensaje
#2 Adrian Garcia
28/01/2004 - 05:21 | Informe spam
En realidad la transaccion bloquea en forma exclusiva inicialmente los
recursos de filas y entradas en los indices que fueron modificados por la
misma.
En el caso de que una operacion en una transaccion empieze a modificar una
cantidad de filas bastante importante de una tabla, SQL Server eleva el
nivel de bloqueo a nivel de bloqueo exclusivo de pagina.
Otro tema que habria que ver es el nivel de aislamiento que tiene tu
transaccion. (ver SET ISOLATION LEVEL) para determinar cuanto mas o
cuanto menos bloquea tu transaccion.

Estas seguro que no se esta bloqueando tablas en vez de bases de datos?

Podrias explicarnos un poco mas como es tu proceso?

Saludos
Adrian D. Garcia
NDSoft


"Sergio Cifuentes" wrote in message
news:%
QUIERO HACER UNA TRANSACCION PARA UN PROCESO DE FACTURACION YA Q SE VAN
GRABANDO DATOS A DIFERENTES TABLAS Y SI NO SE IMPRIME LA FACTURA SE DEBEN
ELIMINAR TODOS LOS DATOS PERO EL PROBLEMA ES QUE CUANDO INIICO LA
TRANSACCION BLOQUEA LA BDD Y LA DESBLOQUEA HASTA EL COMMIT O ROLLBACK DE


LA
TRANSACCION ES POR EL TIPO DE TRANSACCION O Q?? Q TIPO ME ACONSEJAN USAR


HE
BUSCADO EN LOS BOL PERO NO ME EXPLICAN MUY BIEN, GRACIAS.


Respuesta Responder a este mensaje
#3 Sergio Cifuentes
28/01/2004 - 17:23 | Informe spam
si tal vez no fui muy claro, el problema es que yo dentro del proceso
completo de factura hago lo siguiente:

1. inicio proceso de facturacion (llenado de la forma, etc.)
2. presiona el boton facturar
2.1 inicia transaccion.
2.2 graba tabla1.
2.3 graba tabla2.
2.4 update tabla 3.
..
3. levanta ventana de jornalizacion (generalmente es solo de presionar un
boton de aceptar, pero 1 de cada 10 casos se tienen que modificar cuentas o
algo asi)
3.1 graba tabla1.
3.2 .
4. commit a la transaccion o rollback si hay algun error o los datos no
son correctos si commit pasa a 5.
5. imprime factura.

basicamente el problemas es que hay 2 facturadores y si el primero no ha
terminado de jornalizar el otro no puede iniciar el proceso de facturacion,
me imagino que si es a nivel de tablas que se bloquea.

"Adrian Garcia" escribió en el mensaje
news:#
En realidad la transaccion bloquea en forma exclusiva inicialmente los
recursos de filas y entradas en los indices que fueron modificados por la
misma.
En el caso de que una operacion en una transaccion empieze a modificar una
cantidad de filas bastante importante de una tabla, SQL Server eleva el
nivel de bloqueo a nivel de bloqueo exclusivo de pagina.
Otro tema que habria que ver es el nivel de aislamiento que tiene tu
transaccion. (ver SET ISOLATION LEVEL) para determinar cuanto mas o
cuanto menos bloquea tu transaccion.

Estas seguro que no se esta bloqueando tablas en vez de bases de datos?

Podrias explicarnos un poco mas como es tu proceso?

Saludos
Adrian D. Garcia
NDSoft


"Sergio Cifuentes" wrote in message
news:%
> QUIERO HACER UNA TRANSACCION PARA UN PROCESO DE FACTURACION YA Q SE VAN
> GRABANDO DATOS A DIFERENTES TABLAS Y SI NO SE IMPRIME LA FACTURA SE


DEBEN
> ELIMINAR TODOS LOS DATOS PERO EL PROBLEMA ES QUE CUANDO INIICO LA
> TRANSACCION BLOQUEA LA BDD Y LA DESBLOQUEA HASTA EL COMMIT O ROLLBACK DE
LA
> TRANSACCION ES POR EL TIPO DE TRANSACCION O Q?? Q TIPO ME ACONSEJAN USAR
HE
> BUSCADO EN LOS BOL PERO NO ME EXPLICAN MUY BIEN, GRACIAS.
>
>


Respuesta Responder a este mensaje
#4 Adrian Garcia
28/01/2004 - 23:22 | Informe spam
O puede ser a nivel de filas. Si las facturas tienen que tener un nro.
secuencial seguramente estas obteniendolo de alguna fila en una tabla y la
primera transaccion debe bloquear esa fila en forma exclusiva.

No hay forma de que el proceso de jornalizacion se ejecute antes de
bloquear esta tabla especifica? Es decir, por lo menos la entrada de datos
para que luego sea directa.
Una de las practicas recomendadas es que nunca esperar alguna accion de un
operador en medio de una transaccion.

Saludos
Adrian D. Garcia
NDSoft

"Sergio Cifuentes" wrote in message
news:
si tal vez no fui muy claro, el problema es que yo dentro del proceso
completo de factura hago lo siguiente:

1. inicio proceso de facturacion (llenado de la forma, etc.)
2. presiona el boton facturar
2.1 inicia transaccion.
2.2 graba tabla1.
2.3 graba tabla2.
2.4 update tabla 3.
..
3. levanta ventana de jornalizacion (generalmente es solo de presionar


un
boton de aceptar, pero 1 de cada 10 casos se tienen que modificar cuentas


o
algo asi)
3.1 graba tabla1.
3.2 .
4. commit a la transaccion o rollback si hay algun error o los datos no
son correctos si commit pasa a 5.
5. imprime factura.

basicamente el problemas es que hay 2 facturadores y si el primero no ha
terminado de jornalizar el otro no puede iniciar el proceso de


facturacion,
me imagino que si es a nivel de tablas que se bloquea.

"Adrian Garcia" escribió en el mensaje
news:#
> En realidad la transaccion bloquea en forma exclusiva inicialmente los
> recursos de filas y entradas en los indices que fueron modificados por


la
> misma.
> En el caso de que una operacion en una transaccion empieze a modificar


una
> cantidad de filas bastante importante de una tabla, SQL Server eleva el
> nivel de bloqueo a nivel de bloqueo exclusivo de pagina.
> Otro tema que habria que ver es el nivel de aislamiento que tiene tu
> transaccion. (ver SET ISOLATION LEVEL) para determinar cuanto mas o
> cuanto menos bloquea tu transaccion.
>
> Estas seguro que no se esta bloqueando tablas en vez de bases de datos?
>
> Podrias explicarnos un poco mas como es tu proceso?
>
> Saludos
> Adrian D. Garcia
> NDSoft
>
>
> "Sergio Cifuentes" wrote in message
> news:%
> > QUIERO HACER UNA TRANSACCION PARA UN PROCESO DE FACTURACION YA Q SE


VAN
> > GRABANDO DATOS A DIFERENTES TABLAS Y SI NO SE IMPRIME LA FACTURA SE
DEBEN
> > ELIMINAR TODOS LOS DATOS PERO EL PROBLEMA ES QUE CUANDO INIICO LA
> > TRANSACCION BLOQUEA LA BDD Y LA DESBLOQUEA HASTA EL COMMIT O ROLLBACK


DE
> LA
> > TRANSACCION ES POR EL TIPO DE TRANSACCION O Q?? Q TIPO ME ACONSEJAN


USAR
> HE
> > BUSCADO EN LOS BOL PERO NO ME EXPLICAN MUY BIEN, GRACIAS.
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida