Hola a todos..
El tema es el siguiente:
Tenia una aplicacion con cursores la cual me daba miles de problemas con
bloqueos e interbloqueos, hasta el punto de modificar todos los sp. eliminar
todos los cursores y cambiarlo todo por variables de tipo tabla en la cual
inserto los valores que antes recorria con el cursor. Ahora utilizon un
While para recorreme las variable de tipo tabla de la siguiente manera:
DECLARE @dTraspaso TABLE(
rowId INT Identity,
DTraspaso INT NOT NULL,
IdArticulo INT NOT NULL)
INSERT INTO @dTraspaso
SELECT DTRA_IdDTraspaso,DTRA_IdArticulo
FROM DTraspaso001 WITH (NOLOCK)
WHERE DTRA_IdCTraspaso=@lIdCTraspaso
SELECT @iNumFilasDTraspaso=COUNT(*)
FROM @dTraspaso
set @iContadorDTraspaso=0
while @iContadorDTraspaso<@iNumFilasDTraspaso
begin
set @iContadorDTraspaso = @iContadorDTraspaso + 1
SELECT @lIdDTraspaso=DTraspaso,@lIdArticulo=IdArticulo
FROM @dTraspaso
WHERE ROWID=@iContadorDTraspaso
resto de instrucciones
CONTINUE
end
Dentro del cuerpo de ese bucle tengo otros dos bucles similares de tablas
hijas que recorro de la misma manera.
El caso es que al ejecutar la aplicacion desde vb en dos maquinas diferentes
cada una con una transaccion desde vb, se me producen interbloqueos.
que estoy haciendo mal??
En ese caso, que seguro que si, como podria recorrer una tabla A, que tiene
una tabla hija B con N registros, y la tabla B tiene una Tablas Hija C con
N registors
que debo recorrer si usar cursores ni variables de tipo tabla?? No se
me ocurre nada.
Existe alguna manera de definir los bloqueos o debo dejar tarbajar al
servidor por si solo??
Porque me bloquea las tablas que tienen select??
Muchas gracias por su ayuda
Ernessan
Leer las respuestas