Consulta sobre bloqueos

28/02/2006 - 14:29 por jcac | Informe spam
Hola lista,

A nosotros nos vendieron una aplicacion que inicialmente corria sobre SQL
Server 6.5, al parecer primero la migraron despues solo a SQL Server 7.0 y
de alli a SQL Server 2000.

El hecho es que estamos un poco confundidos ya que exite un proceso en el
modulo de ventas que finalmente bloquea varias tablas a la ves, es decir que
cuando se hace una factura o boleta, bloquea las tablas de cabecera y
detalle de las ventas, las tablas de cabecera detalle del kardex,
adicionalmente hay una tabla de saldos la cual tambien la bloquea, tambien
bloquea las tablas de cuentas corrientes (cabecera detalle) y finalmente las
tablas de contabilidad donde se ingresa su respectivo asiento contable
(cabecera - detalle).

El programa incialmente le faltaba control sobre los errores, les hemos
colocado sus respectivos controles en los cuales a veces si hay bloqueos y
se produce tiempo de espera, es decir no lo vote al usuario del programa,
esto funciona en el codigo fuente normalmente, pero cuando se realiza desde
el ejecutable, al parecer el servidor no emite ningun problema de tiempo de
espera y simplemente lo cierra el programa.

El programa esta hecho en Visual Basic 6.0 con el sp6.

Ahora las transacciones se manejan desde el Visual, es decir que cuando va a
grabar se le coloca Coneccion.begintran y despues Conecciion.Committra y
bueno si hubiera un error Coneccion.Rollback.

Expliquenme si hay otra manera de poder manejar los bloqueos o es que no
deberia de hacer desde visual y mas bien los deberia de pasar a SQL pero
tendria que tener muchos calculos en SQL y creo que no serian ideal hacer
eso, pienso que eso es mejor hacerlo en Visual

Gracias por su tiempo

Saludos
 

Leer las respuestas

#1 Maxi
28/02/2006 - 15:35 | Informe spam
Hola, a ver, los bloqueos los maneja el motor con las transacciones por ej:
entonces: a considerar:

Transacciones pequeñas.

Revisa que hacen tus procesos, quizas estas transacciones sean muy largas ya
sea porque usan cursores o no estan bien opetimizadas, pensa que un insert
no deberia demorar casi nada, si demora mucho y encima lo tenes en una
transaccion global se va a poner en bloqueo.

Revisa como estan los indices tambien y si hay triggers.

Como ves hay muchas cosas que mirar, no es simple con lo que has mencionado
y no se puede desde un news poder ver todo esto.

Opciones:
1) Revias con el profiler los procesosa
2) contratas horas de consultoria para que hagan un analisis del sistema


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"jcac" escribió en el mensaje
news:
Hola lista,

A nosotros nos vendieron una aplicacion que inicialmente corria sobre SQL
Server 6.5, al parecer primero la migraron despues solo a SQL Server 7.0 y
de alli a SQL Server 2000.

El hecho es que estamos un poco confundidos ya que exite un proceso en el
modulo de ventas que finalmente bloquea varias tablas a la ves, es decir
que cuando se hace una factura o boleta, bloquea las tablas de cabecera y
detalle de las ventas, las tablas de cabecera detalle del kardex,
adicionalmente hay una tabla de saldos la cual tambien la bloquea, tambien
bloquea las tablas de cuentas corrientes (cabecera detalle) y finalmente
las tablas de contabilidad donde se ingresa su respectivo asiento contable
(cabecera - detalle).

El programa incialmente le faltaba control sobre los errores, les hemos
colocado sus respectivos controles en los cuales a veces si hay bloqueos y
se produce tiempo de espera, es decir no lo vote al usuario del programa,
esto funciona en el codigo fuente normalmente, pero cuando se realiza
desde el ejecutable, al parecer el servidor no emite ningun problema de
tiempo de espera y simplemente lo cierra el programa.

El programa esta hecho en Visual Basic 6.0 con el sp6.

Ahora las transacciones se manejan desde el Visual, es decir que cuando va
a grabar se le coloca Coneccion.begintran y despues Conecciion.Committra y
bueno si hubiera un error Coneccion.Rollback.

Expliquenme si hay otra manera de poder manejar los bloqueos o es que no
deberia de hacer desde visual y mas bien los deberia de pasar a SQL pero
tendria que tener muchos calculos en SQL y creo que no serian ideal hacer
eso, pienso que eso es mejor hacerlo en Visual

Gracias por su tiempo

Saludos

Preguntas similares