SQL - REPEATABLE_READ O SERIALIZABLE

 
Vista:

REPEATABLE_READ O SERIALIZABLE

Publicado por jair melendez (3 intervenciones) el 06/09/2005 16:04:40
Amigos un servicio acerca de un problema en un procedimiento almacenado

el error esta en estas instrucciones

-- OBTENGO LAS CUENTAS CONTABLES PRESUPUESTARIAS QUE SE GENERAN
--AUTOMATICAMENTE Y QUE PERTENCEN AL PERIODO EN PROCESO

DECLARE CUENTASAUTOMATICASPRESUPUESTO SCROLL CURSOR FOR SELECT P.PLCCUENTA
FROM DASERVER4.EDBCORAH.DBO.PLACUE P
WHERE P.PLCANNODE=@EJEANOEJE AND
P.EMPCODIGO=@EMPCODIGO AND
P.PLCMANAUT='A'
OPEN CUENTASAUTOMATICASPRESUPUESTO
FETCH NEXT FROM CUENTASAUTOMATICASPRESUPUESTO INTO @@CUENTAPRESUPUESTO
WHILE (@@FETCH_STATUS <>-1)
BEGIN

-- AQUI BORRO TODOS LOS REGISTROS DEL DETALLE DE COMPROBANTES
--QUE TENGAN CUENTA DE PRESUPUESTO AUTOMATICO Y QUE PERTENECEN AL PERIODO EN PROCESO

DELETE PLCCUENTA FROM DETCOM
INNER JOIN CABCOM ON DETCOM.CACIDENTI=CABCOM.CACIDENTI
WHERE
PLCCUENTA=@@CUENTAPRESUPUESTO AND
CABCOM.EMPCODIGO=@EMPCODIGO AND
CABCOM.EJEANOEJE=@EJEANOEJE AND
CABCOM.EJEMESEJE=@EJEMESEJE

FETCH NEXT FROM CUENTASAUTOMATICASPRESUPUESTO INTO @@CUENTAPRESUPUESTO
END
CLOSE CUENTASAUTOMATICASPRESUPUESTO
DEALLOCATE CUENTASAUTOMATICASPRESUPUESTO

*************************

todo lo anterior es parte de un procedimiento almacenado lo unico particular de estas instrucciones es que hace referencia a otra base de datos ubicados en otro servidor

al momento de ejecutar desde visual basic me sale el siguiente error

LOS CURSORES DE CONJUNTO DE CLAVES ACTUALIZABLES DE TABLA REMOTAS REQUIEREN UNA TRANSACCION CON EL NIVEL DE AISLAMIENTO REPEATABLE_READ O SERIALIZABLE

de repente me falta una instruccion cual es no los se

agradeciento su respuesta
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:REPEATABLE_READ O SERIALIZABLE

Publicado por Isaías Islas (5072 intervenciones) el 06/09/2005 21:07:50
Jair

No se porque tengas que recorres REGISTRO POR REGISTRO, yo lo haria asi: (antes de ejecutarlo, saca un respaldo de tu tabla PLCCUENTA

-- Saco un respaldo
SELECT *
INTO BACK_PLCCUENTA
FROM PLCCUENTA
GO

-- Ejecuto el DELETE directo
DELETE PLCCUENTA
FROM DETCOM JOIN CABCOM ON DETCOM.CACIDENTI=CABCOM.CACIDENTI
WHERE PLCCUENTA IN(
SELECT P.PLCCUENTA
FROM DASERVER4.EDBCORAH.DBO.PLACUE P
WHERE P.PLCANNODE=@EJEANOEJE AND
P.EMPCODIGO=@EMPCODIGO AND
P.PLCMANAUT='A')
AND CABCOM.EJEMESEJE=@EJEMESEJE

Verifica que te dejo.
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:REPEATABLE_READ O SERIALIZABLE

Publicado por jair melendez (3 intervenciones) el 07/09/2005 16:34:02
ok ISAIAS la solucion era por ese medio que tu lo has planteado

Gracias por la ayuda y suerte
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:REPEATABLE_READ O SERIALIZABLE

Publicado por Isaías Islas (5072 intervenciones) el 08/09/2005 01:15:49
Hola Jair

Incluso, debe ejecutarse de forma mas rapida, el uso de CURSORES, afecta la respuesta que te da un servidor de base de datos, hay que ELIMINARLOS en la medida de lo posible utilizando tablas temporales o bien, creando subconsultas (como tu caso).

Saludos.
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