Bloqueos que pasan a nivel de tabla
Publicado por Moisés (2 intervenciones) el 24/04/2007 20:59:20
Hola
Tengo una aplicación visual .NET instalada en una empresa cliente que ha estado funcionando un par de años sin problemas pero ahora, aparentemente sin razón alguna, ha comenzado a dar problema de bloqueos.
El problema consiste en que antes se efectuaba un bloqueo a nivel de registro para evitar una posible modificación concurrente y ahora dicho bloqueo afecta a toda la tabla, evitando la posibilidad de hacer modificaciones concurrentes de dos registros cualquiera de la misma tabla
El bloqueo se conseguía por medio de la siguiente sentencia (c_expediente es la clave de la tabla):
update RRHH_EXPE_PRES
set d_observaciones = d_observaciones
where c_expediente = EXPEDIENTE
Pensaba probar a incluir la opción "with (RowLock)" en el update, pero, si antes funcionaba sin esa cláusula, no entiendo porqué ahora no... Los de la empresa cliente dicen que no han tocado nada en el servidor, tan sólo hablan de unos cambios en la configuración de la red (?!?!?)
El error aparece desde el primer momento, así que tampoco creo que sea cosa del escalado del bloqueo desde nivel de registro a nivel de tabla...
Es un SQLServer 2000. El nivel de ISOLATION se fija como:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Si alguien decirme qué puede estar pasando o cómo paliarlo...
Gracias de todos modos
Un saludo
Tengo una aplicación visual .NET instalada en una empresa cliente que ha estado funcionando un par de años sin problemas pero ahora, aparentemente sin razón alguna, ha comenzado a dar problema de bloqueos.
El problema consiste en que antes se efectuaba un bloqueo a nivel de registro para evitar una posible modificación concurrente y ahora dicho bloqueo afecta a toda la tabla, evitando la posibilidad de hacer modificaciones concurrentes de dos registros cualquiera de la misma tabla
El bloqueo se conseguía por medio de la siguiente sentencia (c_expediente es la clave de la tabla):
update RRHH_EXPE_PRES
set d_observaciones = d_observaciones
where c_expediente = EXPEDIENTE
Pensaba probar a incluir la opción "with (RowLock)" en el update, pero, si antes funcionaba sin esa cláusula, no entiendo porqué ahora no... Los de la empresa cliente dicen que no han tocado nada en el servidor, tan sólo hablan de unos cambios en la configuración de la red (?!?!?)
El error aparece desde el primer momento, así que tampoco creo que sea cosa del escalado del bloqueo desde nivel de registro a nivel de tabla...
Es un SQLServer 2000. El nivel de ISOLATION se fija como:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Si alguien decirme qué puede estar pasando o cómo paliarlo...
Gracias de todos modos
Un saludo
Valora esta pregunta
0