Ayuda con update!!!

30/09/2004 - 19:11 por josenadim | Informe spam
Cordial saludo foreros, tengo un update que debo implementar en un
trigger entre dos servidores, el problema es que el update se queda en
ejecucion por varios minutos y nada , mirando si el problema era
de la tabla destino
realice lo siguiente :
servidor origen SVR1
servidor destino SVR2

1.En el SVR2 cree una tabla con estrucutra similar a la tabla
document vacia a partir de un select
select * into docusept29 from document where 1=2
luego creé PK e indices.

2.Inserte un registro en docusept29 de SVR2 , probé actualizar desde
SVR1 y funcionó

3.Inserté los 600.000 registros que tiene la tabla original a
docusept29
4. Pruebo nuevamente el update de SVR1 a SVR2 y actualiza luego de 29
minutos desde el QA

el update es el siguiente desde SVR1:
UPDATE D SET
D.DocIndPrn =8,
D.DocTipPrn =8,
D.DocUsUPrn=8
from [SVR2].CONTAB.DBO.docusept29 D
WHERE D.empcodemp = 'SEPS' AND D.TAGRCOD = 'FS' AND
D.AGRCOD = 'FSREGSUB' AND D.COMNUMCOa = '22046'
Este update solo modifica un registro.
el update en el mismo SVR2 funciona
el select de este mismo registro desde el SVR1 funciona
Las inserciones entre document de SVR1 y Document de SVR2 si funcionan
porque tenemos un trigger for insert implementado.
No hay bloqueos con la tabla a actualizar ya que es una de prueba y no
veo bloqueos.
La idea final es crear un trigger for update realizando un inner join
entre Tabla Inserted de SVR1 y tabla Document de SVR2.

Agradezco su ayuda
Jose Nadim Mendez M.

Preguntas similare

Leer las respuestas

#1 Adrian D. Garcia
30/09/2004 - 20:06 | Informe spam
hmmm
Intenta esto desde el QA

SET STATISTICS PROFILE ON

UPDATE [SVR2].CONTAB.DBO.docusept29
SET
DocIndPrn =8,
DocTipPrn =8,
DocUsUPrn=8
WHERE empcodemp = 'SEPS' AND TAGRCOD = 'FS' AND
AGRCOD = 'FSREGSUB' AND COMNUMCOa = '22046'

y envianos los resultados, que es nada menos que el plan de ejecucion. Con
ello se podra determinar como se esta ejecutando la sentencia

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Jose Nadim" wrote in message
news:
Cordial saludo foreros, tengo un update que debo implementar en un
trigger entre dos servidores, el problema es que el update se queda en
ejecucion por varios minutos y nada , mirando si el problema era
de la tabla destino
realice lo siguiente :
servidor origen SVR1
servidor destino SVR2

1.En el SVR2 cree una tabla con estrucutra similar a la tabla
document vacia a partir de un select
select * into docusept29 from document where 1=2
luego creé PK e indices.

2.Inserte un registro en docusept29 de SVR2 , probé actualizar desde
SVR1 y funcionó

3.Inserté los 600.000 registros que tiene la tabla original a
docusept29
4. Pruebo nuevamente el update de SVR1 a SVR2 y actualiza luego de 29
minutos desde el QA

el update es el siguiente desde SVR1:
UPDATE D SET
D.DocIndPrn =8,
D.DocTipPrn =8,
D.DocUsUPrn=8
from [SVR2].CONTAB.DBO.docusept29 D
WHERE D.empcodemp = 'SEPS' AND D.TAGRCOD = 'FS' AND
D.AGRCOD = 'FSREGSUB' AND D.COMNUMCOa = '22046'
Este update solo modifica un registro.
el update en el mismo SVR2 funciona
el select de este mismo registro desde el SVR1 funciona
Las inserciones entre document de SVR1 y Document de SVR2 si funcionan
porque tenemos un trigger for insert implementado.
No hay bloqueos con la tabla a actualizar ya que es una de prueba y no
veo bloqueos.
La idea final es crear un trigger for update realizando un inner join
entre Tabla Inserted de SVR1 y tabla Document de SVR2.

Agradezco su ayuda
Jose Nadim Mendez M.
Respuesta Responder a este mensaje
#2 josenadim
01/10/2004 - 02:20 | Informe spam
Adrian ,gracias por contestar ..
esta es la respuesta .. aunque viendo el plan de ejecucion hace Index
Seek lo cual me indica que no hace recorrido,lo ejecute en el mismo
SVR2.
Te comento que lo resolvi realizando un SP en SVR2 que recibe como
parametros los campos a actualizar y los campos que comforman la
llave. Desde SVR1 cuando actualizan ,corre un trigger que llama al sp
de SVR2 con sus respectivos valores, pero.. no me suena bien que
el update no se haga desde un servidor a otro.por eso te agradeceria
que me ayudases a resolver esta incognita.
un saludo
Jose Nadim

Tiempo de ejecución de SQL Server:
Tiempo de CPU = 0 ms, tiempo transcurrido = 37793055 ms.
Rows Executes StmtText


StmtId NodeId
Parent PhysicalOp LogicalOp
Argument


DefinedValues
EstimateRows EstimateIO EstimateCPU
AvgRowSize TotalSubtreeCost OutputList
Warnings Type
Parallel EstimateExecutions



1 1 UPDATE [svr2].CONTAB.DBO.docusept29
SET
DocIndPrn =8,
DocTipPrn =8,
DocUsUPrn=8
WHERE empcodemp = 'SEPS' AND TAGRCOD = 'FS' AND
AGRCOD = 'FSREGSUB' AND COMNUMCOa = '22046'
19 1 0 NULL
NULL NULL


NULL
97.705338 NULL
NULL NULL 2.1025209E-2 NULL
NULL UPDATE
0 NULL
1 1 |--Clustered Index
Update(OBJECT:([contab].[dbo].[DOCUSEPT29].[PK__DOCUSEPT29__39ED81A1]),
SET:([DOCUSEPT29].[DocTipPrn]='8', [DOCUSEPT29].[DocIndPrn]='8',
[DOCUSEPT29].[DocUsuPrn]='8'))
19 2 1 Clustered Index Update
Update
OBJECT:([bpcontab].[dbo].[DOCUSEPT29].[PK__DOCUSEPT29__39ED81A1]),
SET:([DOCUSEPT29].[DocTipPrn]='8', [DOCUSEPT29].[DocIndPrn]='8',
[DOCUSEPT29].[DocUsuPrn]='8')
NULL
97.705338 1.0009898E-2 9.7705335E-5
111 2.1025209E-2 NULL
NULL PLAN_ROW 0
1.0
1 1 |--Top(ROWCOUNT est 0)


19 4
2 Top Top
NULL


NULL 97.705338
0.0 9.7705333E-6 161
1.0907834E-2 [Bmk1000]
NULL PLAN_ROW 0 1.0
1 1 |--Index
Seek(OBJECT:([contab].[dbo].[DOCUSEPT29].[UCOMPEST0]),
SEEK:([DOCUSEPT29].[empcodemp]='SEPS' AND
[DOCUSEPT29].[COMNUMCOa]"046),
WHERE:([DOCUSEPT29].[AGRCOD]='FSREGSUB' AND
[DOCUSEPT29].[TAGRCOD]='FS') ORDERED) 19 5 4
Index Seek Index Seek
OBJECT:([bpcontab].[dbo].[DOCUSEPT29].[UCOMPEST0]),
SEEK:([DOCUSEPT29].[empcodemp]='SEPS' AND
[DOCUSEPT29].[COMNUMCOa]"046),
WHERE:([DOCUSEPT29].[AGRCOD]='FSREGSUB' AND
[DOCUSEPT29].[TAGRCOD]='FS') ORDERED [Bmk1000],
[DOCUSEPT29].[AGRCOD], [DOCUSEPT29].[TAGRCOD] 3.0237432
1.0032204E-2 5.1715522E-4 161
1.0549359E-2 [Bmk1000], [DOCUSEPT29].[AGRCOD],
[DOCUSEPT29].[TAGRCOD] NULL PLAN_ROW 0
1.0

(4 filas afectadas)
Respuesta Responder a este mensaje
#3 Adrian D. Garcia
04/10/2004 - 15:24 | Informe spam
Te has asegurado que tienes el SP3 instalado en ambos servidores? El
comportamiento que describes lo he visto en servidores sin SPs.

Ahora, volviendo al problema en concreto, me he encontrado con el mismo pero
entre servidores vinculados Oracle y SQL Server. La solucion que he
encontrado es la siguiente:

UPDATE OPENQUERY('SVR2', SELECT * FROM CONTAB.DBO.docusept29 WHERE
empcodemp = ''SEPS'' AND TAGRCOD = ''FS'' AND
AGRCOD = ''FSREGSUB'' AND COMNUMCOa = ''22046'' ')
SET
DocIndPrn =8,
DocTipPrn =8,
DocUsUPrn=8
WHERE empcodemp = 'SEPS' AND TAGRCOD = 'FS' AND
AGRCOD = 'FSREGSUB' AND COMNUMCOa = '22046'

De esta forma fuerzo de que el SELECT se ejecute si o si en forma remota
retornandome 1 fila.

Lo que si no recuerdo si el WHERE del UPDATE esta demas o no.


Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Jose Nadim" wrote in message
news:
Adrian ,gracias por contestar ..
esta es la respuesta .. aunque viendo el plan de ejecucion hace Index
Seek lo cual me indica que no hace recorrido,lo ejecute en el mismo
SVR2.
Te comento que lo resolvi realizando un SP en SVR2 que recibe como
parametros los campos a actualizar y los campos que comforman la
llave. Desde SVR1 cuando actualizan ,corre un trigger que llama al sp
de SVR2 con sus respectivos valores, pero.. no me suena bien que
el update no se haga desde un servidor a otro.por eso te agradeceria
que me ayudases a resolver esta incognita.
un saludo
Jose Nadim

Tiempo de ejecución de SQL Server:
Tiempo de CPU = 0 ms, tiempo transcurrido = 37793055 ms.
Rows Executes StmtText


StmtId NodeId
Parent PhysicalOp LogicalOp
Argument


DefinedValues
EstimateRows EstimateIO EstimateCPU
AvgRowSize TotalSubtreeCost OutputList
Warnings Type
Parallel EstimateExecutions


-
-
-



-


1 1 UPDATE [svr2].CONTAB.DBO.docusept29
SET
DocIndPrn =8,
DocTipPrn =8,
DocUsUPrn=8
WHERE empcodemp = 'SEPS' AND TAGRCOD = 'FS' AND
AGRCOD = 'FSREGSUB' AND COMNUMCOa = '22046'
19 1 0 NULL
NULL NULL


NULL
97.705338 NULL
NULL NULL 2.1025209E-2 NULL
NULL UPDATE
0 NULL
1 1 |--Clustered Index
Update(OBJECT:([contab].[dbo].[DOCUSEPT29].[PK__DOCUSEPT29__39ED81A1]),
SET:([DOCUSEPT29].[DocTipPrn]='8', [DOCUSEPT29].[DocIndPrn]='8',
[DOCUSEPT29].[DocUsuPrn]='8'))
19 2 1 Clustered Index Update
Update
OBJECT:([bpcontab].[dbo].[DOCUSEPT29].[PK__DOCUSEPT29__39ED81A1]),
SET:([DOCUSEPT29].[DocTipPrn]='8', [DOCUSEPT29].[DocIndPrn]='8',
[DOCUSEPT29].[DocUsuPrn]='8')
NULL
97.705338 1.0009898E-2 9.7705335E-5
111 2.1025209E-2 NULL
NULL PLAN_ROW 0
1.0
1 1 |--Top(ROWCOUNT est 0)


19 4
2 Top Top
NULL


NULL 97.705338
0.0 9.7705333E-6 161
1.0907834E-2 [Bmk1000]
NULL PLAN_ROW 0 1.0
1 1 |--Index
Seek(OBJECT:([contab].[dbo].[DOCUSEPT29].[UCOMPEST0]),
SEEK:([DOCUSEPT29].[empcodemp]='SEPS' AND
[DOCUSEPT29].[COMNUMCOa]"046),
WHERE:([DOCUSEPT29].[AGRCOD]='FSREGSUB' AND
[DOCUSEPT29].[TAGRCOD]='FS') ORDERED) 19 5 4
Index Seek Index Seek
OBJECT:([bpcontab].[dbo].[DOCUSEPT29].[UCOMPEST0]),
SEEK:([DOCUSEPT29].[empcodemp]='SEPS' AND
[DOCUSEPT29].[COMNUMCOa]"046),
WHERE:([DOCUSEPT29].[AGRCOD]='FSREGSUB' AND
[DOCUSEPT29].[TAGRCOD]='FS') ORDERED [Bmk1000],
[DOCUSEPT29].[AGRCOD], [DOCUSEPT29].[TAGRCOD] 3.0237432
1.0032204E-2 5.1715522E-4 161
1.0549359E-2 [Bmk1000], [DOCUSEPT29].[AGRCOD],
[DOCUSEPT29].[TAGRCOD] NULL PLAN_ROW 0
1.0

(4 filas afectadas)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida