Update complejo (para mi)

14/12/2004 - 17:28 por Anonimo | Informe spam
Tengo dos tablas de transacciones en dos servidores diferentes (local y
Principal (vinculado al local))

La estructura de las tablas es la misma (por comodidad)
IdTransServer int
IdTransLocal int
...
stInServer bit

En condiciones normales, es decir, con la red funcionando, un SP, graba las
transacciones en el Servidor principal, calculando un IdTransServer, y luego
se graba la misma información en el servidor local Calculando un
IdTransLocal y asignado el IdTransServer obtenido anteriormente.
Redundantemente, en el servidor local, tengo una campo-bandera que indica
que se grabo en el servidor (stInServer = 1). Cuando existe un problema con
la Red, solo calculo el IdTransLocal y grabo en el servidor local con
stInServer = 0.

Bien, ahora necesito crear un SP para actualizar los datos que se encuentran
solo en el local. Como el tiempo es critico en mi aplicación, no puedo
actualizar todos los datos a la vez, por tanto uso SET ROWCOUNT n, para
pasarlos por pequeños lotes cuando la aplicación tenga tiempo libre. Este SP
debe tomar los datos del servidor local donde stInServer = 0, calcule el
IdTransServer correspondiente y los inserte en el servidor principal, hasta
aqui, todo va bien, pero luego debo actualizar el valor de stInServer = 1 a
los datos que acabo de pasar al servidor principal, y asignarle el
correspondiente valor de IdTransServer.

Como puedo hacer para actualizar el valor del IdTransServer en una
instruccion UPDATE?
 

Leer las respuestas

#1 Javier Loria
15/12/2004 - 00:12 | Informe spam
Hola:
Los ID's son consecutivos?
Si es asi, podrias buscar el MIN del ID no aplicado:
==SELECT @Minimo=MIN(IdTransLocal)
FROM Tabla
WHERE stInServer = 0
= Sumarle un numero
=SET @Maximo=@Minimo+100
= Y luego actualizar basado en un WHERE:
=UPDATE ...
SET
FROM
WHERE IdTransLocal BETWEEN @Minimo AND @Maximo
AND stInServer=0
= No usuaria ROWCOUNT. Si los Id's no son consecutivos, entonces hay que
usar tecnicas mas complejas ya que habria que buscar generar un numero de
secuencia.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

wrote in message
news:
Tengo dos tablas de transacciones en dos servidores diferentes (local y
Principal (vinculado al local))

La estructura de las tablas es la misma (por comodidad)
IdTransServer int
IdTransLocal int
...
stInServer bit

En condiciones normales, es decir, con la red funcionando, un SP, graba


las
transacciones en el Servidor principal, calculando un IdTransServer, y


luego
se graba la misma información en el servidor local Calculando un
IdTransLocal y asignado el IdTransServer obtenido anteriormente.
Redundantemente, en el servidor local, tengo una campo-bandera que indica
que se grabo en el servidor (stInServer = 1). Cuando existe un problema


con
la Red, solo calculo el IdTransLocal y grabo en el servidor local con
stInServer = 0.

Bien, ahora necesito crear un SP para actualizar los datos que se


encuentran
solo en el local. Como el tiempo es critico en mi aplicación, no puedo
actualizar todos los datos a la vez, por tanto uso SET ROWCOUNT n, para
pasarlos por pequeños lotes cuando la aplicación tenga tiempo libre. Este


SP
debe tomar los datos del servidor local donde stInServer = 0, calcule el
IdTransServer correspondiente y los inserte en el servidor principal,


hasta
aqui, todo va bien, pero luego debo actualizar el valor de stInServer = 1


a
los datos que acabo de pasar al servidor principal, y asignarle el
correspondiente valor de IdTransServer.

Como puedo hacer para actualizar el valor del IdTransServer en una
instruccion UPDATE?




Preguntas similares