Saludos al grupo.
Tengo un codigo Sql como sigue:
Lo que hace es un select de una tabla remota de los registros que tienen un
status diferente de 'P' [Procesado], y los evisa vs. el
servidor local para ver si ya existen, si ya existen pone un status de 'P"
en el servidor remoto (para que en otro proceso ya no los
considere por estar ya procesados).
DECLARE @LlaFac CHAR(10)
DECLARE @Status CHAR(1)
"P"[Procesado] en el servidor Local.
SET @LlaFac = ' '
SET @Status = ' '
DECLARE FLE_VER CURSOR FOR SELECT LLAFAC, ISNULL(STATUS, 'A')
FROM SERVREMOTO.DATABASE.dbo.TABLA WHERE ISNULL(STATUS, 'A') <> 'P'
OPEN FLE_VER
FETCH NEXT FROM FLE_VER INTO @LlaFac, @Status
WHILE @@FETCH_STATUS = 0
BEGIN
IF (@Status = 'A') OR (@Status = 'B') OR (@Status = 'C')
BEGIN
IF (@Status = 'A') OR (@Status = 'C')
BEGIN
IF EXISTS(SELECT * FROM TABLALOCALWHERE LlaFac = @LlaFac)
BEGIN
UPDATE SERVREMOTO.DATABASE.dbo.TABLA SET Status =
'P' WHERE LlaFac = @LlaFac
END
END
ELSE
IF NOT EXISTS(SELECT * FROM TABLALOCALWHERE LlaFac = @LlaFac)
BEGIN
DELETE SERVREMOTO.DATABASE.dbo.TABLA WHERE LlaFac =
@LlaFac
END
END
FETCH NEXT FROM FLE_VER INTO @LlaFac, @Status
END
CLOSE FLE_VER
DEALLOCATE FLE_VER
GO
El problema es que cuando lo ejecuto mediante el Query Analyzer me da el
siguiente mensaje en la pestana de [Messages] :
Remote tables are not updatable. Updatable keyset-driven cursors on remote
tables require a transaction with the REPEATABLE_READ or SERIALIZABLE
isolation level spanning the cursor.
Veo en la ayuda de Sql que se puede serolver con:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
Pero no se donde va insertado este codigo, en que parte va ?
Cualquier ayuda es bienvenida.
Gracias.
Leer las respuestas