SQL - Problemas con concurrencia

 
Vista:

Problemas con concurrencia

Publicado por Isabel (15 intervenciones) el 06/08/2007 16:24:24
Hola, tengo 2 consultas... alguien me puede explicar cómo es que SQL 2000 asigna un tipo de bloqueo (PK, PAG, EXT...etc) a un recurso? eso se puede controlar o corresponde a cada tipo de transacción (Update, Insert, Select) ?

SQL 2000 puede manejar bloqueos por fila?

Además, tengo muchos interbloqueos cuando los usuarios trabajan al mismo tiempo, como puedo evitarlos? Hay algo que se pueda configurar en el servidor para prevenirlos?

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con concurrencia

Publicado por Isaias (5072 intervenciones) el 06/08/2007 17:32:03
En un 99%, los INTERBLOQUEOS son errores en la programacion de tus stores o consultas.

Lee este articulo:

http://support.microsoft.com/kb/271509/es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con concurrencia

Publicado por Isabel (15 intervenciones) el 08/08/2007 01:01:20
Gracias por tu respuesta, aún sigo revisando el enlace.

Tengo 5 PCs ejecutando el proceso A y una PC ejecutando el proceso B, cuando todos ejecutan sus procesos a la vez, 3 ó 4 PCs muestran el mensaje de interbloqueo; pero después de unos minutos el proceso continúa y cuando
reviso la información en la base de datos en algunos casos está incompleta.
He leido que cuando suceden los interbloqueos el SQL decide el proceso menos costoso y lo deshace.
Al suceder interbloqueos, ¿significa que el SQL deshace todos los procesos interbloqueados o los procesos continúan a penas se disponga del recurso? No sé como interpretar este comportamiento (interbloqueos en varias PCs al mismo tiempo),
por favor si pudieras explicarme o citarme alguna referencia.

Muchas Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con concurrencia

Publicado por Isaias (5072 intervenciones) el 08/08/2007 02:10:45
Isabel

Un INTERBLOQUEO se genera cuando mas de un CLIENTE (CONEXION) toma un mismo registro o bloque de registros.

Un simple SELECT * FROM TUTABLA, hace un BLOQUEO, a menos que le agregues al final WITH NOLOCK.

Para saber que y que esta bloqueando, ejecuta en tu ANALIZADOR DE CONSULTAS.

DBCC OPENTRAN

Te dira que SPID esta bloqueando, entonces tomas ese SPID (id de conexion) y ejecutas:

DBCC INPUTBUFFER(spid)

Te dira, que esta haciendo.

La referencia que te di, te dice como MONITOREAR LOS INTERBLOQUEOS, ¿No te sirvio?

Te dejo otra:

-- sql 2000
http://www.portalsql.com/bloqueadores.asp?articulo=256

-- sql 2005
http://www.portalsql.com/cazaBloqueadores.asp?articulo=316
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar