Bloqueos

17/06/2004 - 20:42 por jortiz | Informe spam
Buenos días, tengo actualmente un problema bastante serio
con SQL server 2000 que me está causando mucha dificultad
resolver, se trata del manejo de bloqueos de tablas.
Siempre he utilizado Oracle y el manejo aquí es un poco
extraño para mi pero deseo incursionar en éste gran dbms.

El problema es que desde una aplicación en java estoy
ejecutando Queries y si a su vez ejecuto alguna
transacción como por ejemplo un update o un insert, la
aplicación se bloquea, el problema debe ser algo como un
abrazo mortal (deadlock).

Como resuelvo este problema ???

He leído algo sobre ésto, y me he dado cuenta que SQL
SErver bloquea las tablas cuando se realiza un select, de
modo que ésta debe ser la causante. Ahora bien, deseo
poder hacer transacciones, sin tener que esperar a que la
consulta termine ya que algunas de ellas son bastante
largas, ya he visto algo acerca del nolock, pero tambien
conozco sus riezgos.

Me podrían decir como puedo actuar en ésto casos ???

Existe alguna sentencia para desbloquear manualmente un
objeto, ya que por lo que veo los queries me están dejando
las tablas bloqueadas hasta que cierre la sesion del query
analizer (Ya que aun las veo en el locks/object del
enterprise manager y se desaparecen cuando cierro el query
analyzer y reinicio el enterprise manager).

Preguntas similare

Leer las respuestas

#1 Roberto G.A.
17/06/2004 - 22:36 | Informe spam
La mejor solución para estos queridos "DeadLock" viene desde el propio
diseño del acceso de la base de datos, por ejemplo si tienes unos métodos
que usan tabla1 primero y luego la tabla2, esta misma jerarquía de acceso
deberías respetarla a lo largo de tu aplicación, ya que si al mismo tiempo
se ejecuta otro método que realiza el acceso justo al revés, o sea tabla2 y
luego tabla1 podemos tener problemas de este tipo.

Espero haberte orientado. 0:)
Roberto G.A.


"jortiz" wrote in message
news:1deaf01c4549a$db2469f0$
Buenos días, tengo actualmente un problema bastante serio
con SQL server 2000 que me está causando mucha dificultad
resolver, se trata del manejo de bloqueos de tablas.
Siempre he utilizado Oracle y el manejo aquí es un poco
extraño para mi pero deseo incursionar en éste gran dbms.

El problema es que desde una aplicación en java estoy
ejecutando Queries y si a su vez ejecuto alguna
transacción como por ejemplo un update o un insert, la
aplicación se bloquea, el problema debe ser algo como un
abrazo mortal (deadlock).

Como resuelvo este problema ???

He leído algo sobre ésto, y me he dado cuenta que SQL
SErver bloquea las tablas cuando se realiza un select, de
modo que ésta debe ser la causante. Ahora bien, deseo
poder hacer transacciones, sin tener que esperar a que la
consulta termine ya que algunas de ellas son bastante
largas, ya he visto algo acerca del nolock, pero tambien
conozco sus riezgos.

Me podrían decir como puedo actuar en ésto casos ???

Existe alguna sentencia para desbloquear manualmente un
objeto, ya que por lo que veo los queries me están dejando
las tablas bloqueadas hasta que cierre la sesion del query
analizer (Ya que aun las veo en el locks/object del
enterprise manager y se desaparecen cuando cierro el query
analyzer y reinicio el enterprise manager).
Respuesta Responder a este mensaje
#2 Isaías
18/06/2004 - 01:59 | Informe spam
A parte de lo que recomienda Roberto, lea un poco en su
ayuda en linea

BEGIN TRAN
COMMIT TRAN
ROLLBACK TRAN

Saludos
Respuesta Responder a este mensaje
#3 Javier Loria
18/06/2004 - 05:42 | Informe spam
Hola:
El comportamiento default de SQL no es bloquear con el SELECT se
requiere o un cambio en el nivel de aislamiento o una sugerencia de bloqueo
para que esto ocurra. No se como funciona en Java pero deberias revisar si
existe algun tipo de configuracion para pasar de un bloqueo pesimista (asi
se llama cuando bloqueas cuando lees previendo cambiar los datos) o bloqueos
optimistas.
Dejar un bloqueo/transaccion abierta mientras existe intervencion del
usuario es suicida para cualquier aplicacion.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

jortiz escribio:
Buenos días, tengo actualmente un problema bastante serio
con SQL server 2000 que me está causando mucha dificultad
resolver, se trata del manejo de bloqueos de tablas.
Siempre he utilizado Oracle y el manejo aquí es un poco
extraño para mi pero deseo incursionar en éste gran dbms.

El problema es que desde una aplicación en java estoy
ejecutando Queries y si a su vez ejecuto alguna
transacción como por ejemplo un update o un insert, la
aplicación se bloquea, el problema debe ser algo como un
abrazo mortal (deadlock).

Como resuelvo este problema ???

He leído algo sobre ésto, y me he dado cuenta que SQL
SErver bloquea las tablas cuando se realiza un select, de
modo que ésta debe ser la causante. Ahora bien, deseo
poder hacer transacciones, sin tener que esperar a que la
consulta termine ya que algunas de ellas son bastante
largas, ya he visto algo acerca del nolock, pero tambien
conozco sus riezgos.

Me podrían decir como puedo actuar en ésto casos ???

Existe alguna sentencia para desbloquear manualmente un
objeto, ya que por lo que veo los queries me están dejando
las tablas bloqueadas hasta que cierre la sesion del query
analizer (Ya que aun las veo en el locks/object del
enterprise manager y se desaparecen cuando cierro el query
analyzer y reinicio el enterprise manager).
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida