Ayuda con DeadLock

08/09/2005 - 21:51 por Tumba | Informe spam
Hola necesito ayuda para evitar Deadlocks con un Stored
Me da un Error en una Linea Condicional (IF EXIST) con un Update.

Adjunto la informacion de una traza y el codigo del SP para ver si me pueden
ayudar en algo, Muchas Gracias de antemano!!!

Deadlock encountered Printing deadlock information
2005-09-08 12:14:09.26 spid4
2005-09-08 12:14:09.26 spid4 Wait-for graph
2005-09-08 12:14:09.26 spid4
2005-09-08 12:14:09.26 spid4 Node:1
2005-09-08 12:14:09.26 spid4 RID: 7:1:2958:53 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:09.26 spid4 Grant List 0::
2005-09-08 12:14:09.26 spid4 Owner:0x19585200 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:54 ECID:0
2005-09-08 12:14:09.26 spid4 SPID: 54 ECID: 0 Statement Type: UPDATE
Line #: 4
2005-09-08 12:14:09.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296694



2005-09-08 12:14:09.26 spid4 Requested By:
2005-09-08 12:14:09.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x195827a0 Cost:(0/554)
2005-09-08 12:14:09.26 spid4
2005-09-08 12:14:09.26 spid4 Node:2
2005-09-08 12:14:09.26 spid4 RID: 7:1:4342:0 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:09.26 spid4 Grant List 0::
2005-09-08 12:14:09.26 spid4 Owner:0x267302e0 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:53 ECID:0
2005-09-08 12:14:09.26 spid4 SPID: 53 ECID: 0 Statement Type: UPDATE
Line #: 4
2005-09-08 12:14:09.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:14:09.26 spid4 Requested By:
2005-09-08 12:14:09.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x195851a0 Cost:(0/1CC)
2005-09-08 12:14:09.26 spid4 Victim Resource Owner:
2005-09-08 12:14:09.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x195851a0 Cost:(0/1CC)
2005-09-08 12:14:14.26 spid4
Deadlock encountered Printing deadlock information
2005-09-08 12:14:14.26 spid4
2005-09-08 12:14:14.26 spid4 Wait-for graph
2005-09-08 12:14:14.26 spid4
2005-09-08 12:14:14.26 spid4 Node:1
2005-09-08 12:14:14.26 spid4 RID: 7:1:4095:0 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:14.26 spid4 Grant List 0::
2005-09-08 12:14:14.26 spid4 Owner:0x19584a80 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:55 ECID:0
2005-09-08 12:14:14.26 spid4 SPID: 55 ECID: 0 Statement Type: UPDATE
Line #: 4
2005-09-08 12:14:14.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,276521

2005-09-08 12:14:14.26 spid4 Requested By:
2005-09-08 12:14:14.26 spid4 ResType:LockOwner Stype:'OR' Mode: S
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x26730340 Cost:(0/5A0)
2005-09-08 12:14:14.26 spid4
2005-09-08 12:14:14.26 spid4 Node:2
2005-09-08 12:14:14.26 spid4 RID: 7:1:4342:0 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:14.26 spid4 Grant List 0::
2005-09-08 12:14:14.26 spid4 Owner:0x267302e0 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:53 ECID:0
2005-09-08 12:14:14.26 spid4 SPID: 53 ECID: 0 Statement Type:
CONDITIONAL Line #: 234
2005-09-08 12:14:14.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:14:14.26 spid4 Requested By:
2005-09-08 12:14:14.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:55 ECID:0 Ec:(0x1CE0B538) Value:0x195849a0 Cost:(0/218)
2005-09-08 12:14:14.26 spid4 Victim Resource Owner:
2005-09-08 12:14:14.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:55 ECID:0 Ec:(0x1CE0B538) Value:0x195849a0 Cost:(0/218)
2005-09-08 12:25:55.47 spid4
Deadlock encountered Printing deadlock information
2005-09-08 12:25:55.47 spid4
2005-09-08 12:25:55.47 spid4 Wait-for graph
2005-09-08 12:25:55.47 spid4
2005-09-08 12:25:55.47 spid4 Node:1
2005-09-08 12:25:55.47 spid4 RID: 7:1:2958:53 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:25:55.47 spid4 Grant List 0::
2005-09-08 12:25:55.47 spid4 Owner:0x19589260 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:54 ECID:0
2005-09-08 12:25:55.47 spid4 SPID: 54 ECID: 0 Statement Type: SELECT
Line #: 86
2005-09-08 12:25:55.47 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296694



2005-09-08 12:25:55.47 spid4 Requested By:
2005-09-08 12:25:55.47 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x19588c40 Cost:(0/1CC)
2005-09-08 12:25:55.47 spid4
2005-09-08 12:25:55.47 spid4 Node:2
2005-09-08 12:25:55.47 spid4 PAG: 7:1:63735 CleanCnt:2
Mode: IX Flags: 0x2
2005-09-08 12:25:55.47 spid4 Grant List 0::
2005-09-08 12:25:55.47 spid4 Owner:0x2721e220 Mode: IX Flg:0x0
Ref:1 Life:02000000 SPID:53 ECID:0
2005-09-08 12:25:55.47 spid4 SPID: 53 ECID: 0 Statement Type: UPDATE
Line #: 4
2005-09-08 12:25:55.47 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:25:55.47 spid4 Requested By:
2005-09-08 12:25:55.47 spid4 ResType:LockOwner Stype:'OR' Mode: S
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x195893e0 Cost:(0/2C64)
2005-09-08 12:25:55.47 spid4 Victim Resource Owner:
2005-09-08 12:25:55.47 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x19588c40 Cost:(0/1CC)
2005-09-08 12:29:53.88 backup Database backed up: Database: pregase,
creation date(time): 2005/09/07(13:20:48), pages dumped: 170341, first LSN:
41774:10341:1, last LSN: 41774:10350:1, number of dump devices: 1, device
information: (FILE=1, TYPE=DISK: {'C:\Archivos de programa\Microsoft SQL
Server\MSSQL\BACKUP\Backup20050908'}).
2005-09-08 12:32:23.47 backup Database backed up: Database: pregase,
creation date(time): 2005/09/07(13:20:48), pages dumped: 170341, first LSN:
41774:10353:1, last LSN: 41774:10355:1, number of dump devices: 1, device
information: (FILE=2, TYPE=DISK: {'C:\Archivos de programa\Microsoft SQL
Server\MSSQL\BACKUP\Backup20050908'}).
2005-09-08 12:38:50.10 spid58 Starting up database 'Pregase_Back'.
2005-09-08 12:38:50.10 spid58 Bypassing recovery for database
'Pregase_Back' because it is marked IN LOAD.
2005-09-08 12:38:54.04 spid58 Starting up database 'Pregase_Back'.
2005-09-08 12:38:54.04 spid58 Bypassing recovery for database
'Pregase_Back' because it is marked IN LOAD.
2005-09-08 12:38:55.63 spid58 La recuperación está estableciendo puntos
de comprobación en la base de datos 'Pregase_Back' (9)
2005-09-08 12:38:56.01 spid58 Starting up database 'Pregase_Back'.
2005-09-08 12:38:57.95 backup Database restored: Database: Pregase_Back,
creation date(time): 2005/09/07(13:20:48), first LSN: 41774:10353:1, last
LSN: 41774:10355:1, number of dump devices: 1, device information: (FILE=2,
TYPE=DISK: {'C:\Archivos de programa\Microsoft SQL
Server\MSSQL\BACKUP\Backup20050908'}).
2005-09-08 12:42:57.92 spid4
Deadlock encountered Printing deadlock information
2005-09-08 12:42:57.92 spid4
2005-09-08 12:42:57.92 spid4 Wait-for graph
2005-09-08 12:42:57.92 spid4
2005-09-08 12:42:57.92 spid4 Node:1
2005-09-08 12:42:57.92 spid4 RID: 7:1:2958:53 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:42:57.92 spid4 Grant List 0::
2005-09-08 12:42:57.92 spid4 Owner:0x195bcba0 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:54 ECID:0
2005-09-08 12:42:57.92 spid4 SPID: 54 ECID: 0 Statement Type: SELECT
Line #: 86
2005-09-08 12:42:57.92 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296694



2005-09-08 12:42:57.92 spid4 Requested By:
2005-09-08 12:42:57.92 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x267e8da0 Cost:(0/1CC)
2005-09-08 12:42:57.92 spid4
2005-09-08 12:42:57.92 spid4 Node:2
2005-09-08 12:42:57.92 spid4 PAG: 7:1:63735 CleanCnt:2
Mode: IX Flags: 0x2
2005-09-08 12:42:57.92 spid4 Grant List 0::
2005-09-08 12:42:57.92 spid4 Owner:0x267e8fa0 Mode: IX Flg:0x0
Ref:1 Life:02000000 SPID:53 ECID:0
2005-09-08 12:42:57.92 spid4 SPID: 53 ECID: 0 Statement Type: UPDATE
Line #: 4
2005-09-08 12:42:57.92 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:42:57.92 spid4 Requested By:
2005-09-08 12:42:57.92 spid4 ResType:LockOwner Stype:'OR' Mode: S
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x267e9840 Cost:(0/2C64)
2005-09-08 12:42:57.92 spid4 Victim Resource Owner:
2005-09-08 12:42:57.92 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x267e8da0 Cost:(0/1CC)
2005-09-08 12:43:33.43 spid52 Proceso con Id. 54 eliminado por el host
CPE2015, Id. de proceso host 2624.
2005-09-08 12:44:30.41 spid4



CREATE PROCEDURE spCalcularPuntaje
@pOp INT, @pConvocatoria INT, @pAgente INT
, @pCantidad int = NULL
AS

DECLARE @tempFormula VARCHAR(100)
DECLARE @concepto INT
DECLARE @inscripcion INT
DECLARE @error INT
DECLARE @temp12 VARCHAR(100)
DECLARE @tipoConvocatoria INT
DECLARE @tieneRequisitos INT
DECLARE @cargoGenerico INT
DECLARE @escuelaCabecera INT

SET NOCOUNT ON

BEGIN TRANSACTION


SELECT 'OPCION ' + cast(@pOp as varchar)
IF @pOp = 1
BEGIN

DECLARE @agenteNuevo int

CREATE TABLE #tempAgentes (idAgente int)
INSERT INTO #tempAgentes
/*
SELECT distinct IC.agente
FROM tb_InscripcionesConvocatorias IC
where IC.idInscripcionconvocatoria not in (SELECT inscripcion

FROM tb_CalificacionesDeInscripcion)
and IC.convocatoria = @pConvocatoria
order by IC.agente
*/

SELECT DISTINCT agente
FROM tb_InscripcionesConvocatorias IC
WHERE agente not in (select idAgente from tb_AuditoriaClasificacion)

AND convocatoria = @pConvocatoria




DECLARE x_CalculoP CURSOR FOR


SELECT CP.FormulaPuntaje, CP.IDConcepto,
IC.IdInscripcionConvocatoria,IC.agente
, C.TipoConvocatoria, IC.tieneRequisitos,
IC.cargoGenerico,IC.escuelaCabecera
FROM tb_ConceptosDePuntaje CP INNER JOIN tb_TiposDeConvocatorias TC

ON CP.TipoConvocatoria = TC.IdTipoConvocatoria
INNER JOIN tb_Convocatorias C ON C.TipoConvocatoria = TC.IdTipoConvocatoria

INNER JOIN tb_InscripcionesConvocatorias IC ON IC.Convocatoria =
C.IdConvocatoria
WHERE C.IdConvocatoria = @pConvocatoria
AND (CP.FormulaPuntaje IS NOT NULL or CP.FormulaPuntaje <> '')

AND IC.agente in (SELECT TOP 500 idAgente FROM #tempAgentes)

ORDER BY IC.agente,cp.nrodeorden



OPEN x_CalculoP

FETCH NEXT FROM x_CalculoP INTO @tempFormula, @concepto, @inscripcion,
@agenteNuevo, @tipoConvocatoria, @tieneRequisitos, @cargoGenerico,
@escuelaCabecera

WHILE @@FETCH_STATUS = 0
BEGIN
SELECT 'AGENTE ***: ' + cast(@agenteNuevo as varchar)


IF @tieneRequisitos = 1
BEGIN
DECLARE @temp VARCHAR(1000)
SELECT @temp = 'DECLARE @puntaje FLOAT ' + char(10) + 'SET @puntaje = 0 '
+ char(10)
SELECT @temp = @temp + 'EXEC ' +@tempFormula + ' ' + convert(varchar,
@inscripcion) + ',' + convert(varchar, @concepto)+ ', @puntaje output, 0' +
char(10)

IF EXISTS(SELECT * FROM tb_CalificacionesDeInscripcion CI

INNER JOIN tb_InscripcionesConvocatorias IC1
ON IC1.IdInscripcionConvocatoria = CI.Inscripcion
WHERE IC1.Convocatoria = @pConvocatoria and ci.inscripcion =
@inscripcion
and Concepto = @concepto)
BEGIN
SELECT @temp = @temp + 'UPDATE tb_CalificacionesDeInscripcion SET
Calculado=1, CalculadoDefinitivo = 1,Puntaje = ISNULL(@puntaje, 0)' + 'where
Inscripcion = ' + convert(varchar, @inscripcion) + ' and Concepto = ' +
convert(varchar, @concepto)












END
ELSE
BEGIN
SELECT @temp = @temp
+ ' INSERT INTO tb_CalificacionesDeInscripcion(Inscripcion,
Concepto, TipoConvocatoria,Puntaje,Calculado, CalculadoDefinitivo) VALUES(' +
convert(varchar, @inscripcion)
+ ', ' + convert(varchar, @concepto) + ', ' + convert(varchar,
@tipoConvocatoria) + ', ISNULL(@puntaje, 0),1,1)'
END
EXEC(@temp)

END
ELSE --no tiene requisitos para la convocatoria
BEGIN
SELECT 'SIN REQUISITOS'
END
SELECT 'SE EJECUTO ' + cast (@tempFormula as varchar)
FETCH NEXT FROM x_CalculoP INTO @tempFormula, @concepto, @inscripcion,
@agenteNuevo, @tipoConvocatoria,@tieneRequisitos,@cargoGenerico,
@escuelaCabecera
END --del while

CLOSE x_CalculoP
DEALLOCATE x_CalculoP
DROP TABLE #tempAgentes

END

IF @pOp = 3 BEGIN
DECLARE @fechaLimite int


DECLARE x_CalculoP CURSOR FOR

SELECT CP.FormulaPuntaje, CP.IDConcepto, IC.IdInscripcionConvocatoria

,C.TipoConvocatoria, IC.tieneRequisitos, IC.cargoGenerico,
IC.EscuelaCabecera
FROM tb_ConceptosDePuntaje CP
INNER JOIN tb_TiposDeConvocatorias TC
ON CP.TipoConvocatoria = TC.IdTipoConvocatoria
INNER JOIN tb_Convocatorias C
ON C.TipoConvocatoria = TC.IdTipoConvocatoria
INNER JOIN tb_InscripcionesConvocatorias IC
ON IC.Convocatoria = C.IdConvocatoria
WHERE C.IdConvocatoria = @pConvocatoria
AND (CP.FormulaPuntaje IS NOT NULL or CP.FormulaPuntaje <> '')

AND IC.agente = @pAgente
ORDER by cp.nrodeorden

OPEN x_CalculoP

FETCH NEXT FROM x_CalculoP INTO @tempFormula, @concepto, @inscripcion,
@tipoConvocatoria,@tieneRequisitos,@cargoGenerico,@escuelaCabecera


WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @temp3 VARCHAR(8000)
IF @tieneRequisitos = 1
BEGIN
IF @tipoConvocatoria = 9 --Ingreso a la docencia
BEGIN
IF EXISTS(
SELECT *
FROM tb_PosiblesVacantes PV
WHERE PV.Convocatoria = @pConvocatoria
AND PV.CargoGenerico = @cargoGenerico
AND PV.EscuelaCabecera = @EscuelaCabecera)
BEGIN

SELECT @temp3 = 'DECLARE @puntaje numeric(4,2) ' + char(10) + 'SET
@puntaje = 0 ' + char(10)
SELECT @temp3 = @temp3 + 'EXEC ' + @tempFormula + ' ' +
convert(varchar, @inscripcion) + ','+ convert(varchar, @concepto) + ',
@puntaje output, 0 ' + char(10)

IF EXISTS(
SELECT *
FROM tb_CalificacionesDeInscripcion CI
INNER JOIN tb_InscripcionesConvocatorias IC
ON IC.IdInscripcionConvocatoria = CI.Inscripcion

WHERE IC.Convocatoria = @pConvocatoria
AND CI.inscripcion = @inscripcion
AND Concepto = @concepto)
BEGIN
UPDATE tb_InscripcionesConvocatorias
SET SinVacante9 = 0
WHERE idInscripcionConvocatoria = @inscripcion

SELECT @temp3 = @temp3 + 'UPDATE tb_CalificacionesDeInscripcion
SET Calculado=0, CalculadoDefinitivo = 0,Puntaje = ISNULL(@puntaje, 0)' +
'where Inscripcion = ' + convert(varchar, @inscripcion) + ' and Concepto = '
+ convert(varchar, @concepto





)
EXEC(@temp3)
END
ELSE
BEGIN
SELECT @temp3 = @temp3 + 'INSERT INTO
tb_CalificacionesDeInscripcion(Inscripcion, Concepto, TipoConvocatoria,
Puntaje, Calculado, CalculadoDefinitivo) VALUES(' + convert(varchar,
@inscripcion) + ', ' + convert(varchar, @concepto) + ', '

+ convert (varchar, @tipoConvocatoria) + ', ISNULL(@puntaje,
0),0,0)'
EXEC(@temp3)
END
END
ELSE
BEGIN
SELECT 'SIN VACANTE EN CONVOCATORIA'
IF EXISTS(
SELECT *
FROM tb_CalificacionesDeInscripcion CI
INNER JOIN tb_InscripcionesConvocatorias IC
ON IC.IdInscripcionConvocatoria = CI.Inscripcion

WHERE IC.Convocatoria = @pConvocatoria
AND CI.inscripcion = @inscripcion
AND Concepto = @concepto)
BEGIN
SELECT @temp3 = 'UPDATE tb_CalificacionesDeInscripcion SET
Calculado=0, CalculadoDefinitivo = 0,Puntaje = 0' + 'where Inscripcion = ' +
convert(varchar, @inscripcion) + ' and Concepto = ' + convert(varchar,
@concepto)
END
ELSE
SELECT @temp3 = 'INSERT INTO
tb_CalificacionesDeInscripcion(Inscripcion, Concepto, TipoConvocatoria,
Puntaje, Calculado, CalculadoDefinitivo) VALUES(' + convert(varchar,
@inscripcion) + ', ' + convert(varchar, @concepto)
+ ', ' + convert(varchar,@tipoConvocatoria) + ', 0,0,0)'


EXEC(@temp3)

UPDATE tb_InscripcionesConvocatorias
SET SinVacante9 = 1,
Orden9 = 51
WHERE idInscripcionConvocatoria = @inscripcion

SELECT '***********************'
SELECT sinVacante9
from tb_InscripcionesConvocatorias
where idInscripcionConvocatoria = @inscripcion


END
END
ELSE
BEGIN --tipoconvocatoria <> 9
SELECT @temp3 = 'DECLARE @puntaje numeric(4,2) ' + char(10) + 'SET
@puntaje = 0 ' + char(10)
SELECT @temp3 = @temp3 + 'EXEC ' + @tempFormula + ' ' + convert(varchar,
@inscripcion) + ','+ convert(varchar, @concepto) + ', @puntaje output, 0 '
+ char(10)

IF EXISTS(
SELECT *
FROM tb_CalificacionesDeInscripcion CI
INNER JOIN tb_InscripcionesConvocatorias IC
ON IC.IdInscripcionConvocatoria = CI.Inscripcion

WHERE CI.inscripcion = @inscripcion
AND IC.Convocatoria = @pConvocatoria
AND Concepto = @concepto
)
BEGIN
SELECT @temp3 = @temp3 + 'UPDATE tb_CalificacionesDeInscripcion SET
Calculado=0, CalculadoDefinitivo = 0,Puntaje = ISNULL(@puntaje, 0)' + 'where
Inscripcion = ' + convert(varchar, @inscripcion) + ' and Concepto = ' +
convert(varchar, @concepto)

END
ELSE
SELECT @temp3 = @temp3 + 'INSERT INTO
tb_CalificacionesDeInscripcion(Inscripcion, Concepto, TipoConvocatoria,
Puntaje, Calculado, CalculadoDefinitivo) VALUES(' + convert(varchar,
@inscripcion) + ', ' + convert(varchar, @concepto) + ', ' + convert(







varchar, @tipoConvocatoria) + ', ISNULL(@puntaje, 0),0,0)'


EXEC(@temp3)
END --de tipoconvocatoria <> 9
END --de tiene requisitos
ELSE --No tiene requisitos para la convocatoria
BEGIN
SELECT 'SIN REQUISITOS'
IF EXISTS(
SELECT *
FROM tb_CalificacionesDeInscripcion CI
INNER JOIN tb_InscripcionesConvocatorias IC
ON IC.IdInscripcionConvocatoria = CI.Inscripcion

WHERE IC.Convocatoria = @pConvocatoria
AND CI.inscripcion = @inscripcion
AND Concepto = @concepto)
BEGIN
SELECT @temp3 = 'UPDATE tb_CalificacionesDeInscripcion SET
Calculado=0, CalculadoDefinitivo = 0,Puntaje = 0' + 'where Inscripcion = ' +
convert(varchar, @inscripcion) + ' and Concepto = ' + convert(varchar,
@concepto)
END
ELSE
SELECT @temp3 = 'INSERT INTO
tb_CalificacionesDeInscripcion(Inscripcion, Concepto, TipoConvocatoria,
Puntaje, Calculado, CalculadoDefinitivo) VALUES(' + convert(varchar,
@inscripcion) + ', ' + convert(varchar, @concepto)
+ ', ' + convert(varchar, @tipoConvocatoria) + ', 0,0,0)'


EXEC(@temp3)
UPDATE tb_InscripcionesConvocatorias
SET Orden9 = 50
WHERE idInscripcionConvocatoria = @inscripcion

END
FETCH NEXT FROM x_CalculoP INTO @tempFormula, @Concepto,
@inscripcion,@tipoConvocatoria,@tieneRequisitos,@cargoGenerico,@escuelaCabecera
END--del while

CLOSE x_CalculoP
DEALLOCATE x_CalculoP


END

Salir:

IF @error <> 0 BEGIN
PRINT('ROLLBACK')
ROLLBACK TRANSACTION
END
ELSE BEGIN
PRINT('COMMIT')
/*select *
from tb_CalificacionesDeInscripcion
where inscripcion in (select idInscripcionConvocatoria from
tb_InscripcionesConvocatorias
where agente = 220688
and convocatoria = 44)*/
COMMIT TRANSACTION
END

SET NOCOUNT OFF

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
08/09/2005 - 22:50 | Informe spam
Tumba,

El deadlock es producido por un bloqueo de recursos entre dos transacciones
o procesos. SQL Server escoje la victima en base a una formula de costo, al
menos que hayas seteado "DEADLOCK_PRIORITY". A lo que voy es que no porque el
proceso que estava ejecutando este procedimiento fue seleccionado como
victima, significa que este procedimiento esta mal, en realidad se deben
revisar ambos procedimientos o codigo ejecutado en los procesos involucrados
en el deadlock.

Sera muy dificil poder ayudarte, primero porque no sabemos nada respecto a
las tablas involucradas, desde estructura hasta indices, tampoco sabemos lo
que hacen estos procesos y ademas, en este procedimiento no solo que usas un
cursor sino que tambien te armas una sentencia dinamicamente. No por
criticar, pero han programado este sp de una manera que tarde o temprano
saldria un problema.

Te paso un link sobre que hacer para evitar deadlocks y espero puedas buscar
una solucion basada en conjuntos a este sp. Dejanos saber mas sobre las
tablas y los procesos y quizas demos con una solucion.

Al menos sabes las tablas involucradas en el deadlock?
De saber lo anterior, tienen cada una de las tablas un indice clustered?

Deadlockin
http://msdn.microsoft.com/library/d...a_8i93.asp

INF: Analyzing and Avoiding Deadlocks in SQL Server
http://support.microsoft.com/defaul...-us;169960

Minimizing Deadlock
http://msdn.microsoft.com/library/d...a_3hdf.asp


AMB

"Tumba" wrote:

Hola necesito ayuda para evitar Deadlocks con un Stored
Me da un Error en una Linea Condicional (IF EXIST) con un Update.

Adjunto la informacion de una traza y el codigo del SP para ver si me pueden
ayudar en algo, Muchas Gracias de antemano!!!

Deadlock encountered Printing deadlock information
2005-09-08 12:14:09.26 spid4
2005-09-08 12:14:09.26 spid4 Wait-for graph
2005-09-08 12:14:09.26 spid4
2005-09-08 12:14:09.26 spid4 Node:1
2005-09-08 12:14:09.26 spid4 RID: 7:1:2958:53 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:09.26 spid4 Grant List 0::
2005-09-08 12:14:09.26 spid4 Owner:0x19585200 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:54 ECID:0
2005-09-08 12:14:09.26 spid4 SPID: 54 ECID: 0 Statement Type: UPDATE
Line #: 4
2005-09-08 12:14:09.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296694



2005-09-08 12:14:09.26 spid4 Requested By:
2005-09-08 12:14:09.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x195827a0 Cost:(0/554)
2005-09-08 12:14:09.26 spid4
2005-09-08 12:14:09.26 spid4 Node:2
2005-09-08 12:14:09.26 spid4 RID: 7:1:4342:0 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:09.26 spid4 Grant List 0::
2005-09-08 12:14:09.26 spid4 Owner:0x267302e0 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:53 ECID:0
2005-09-08 12:14:09.26 spid4 SPID: 53 ECID: 0 Statement Type: UPDATE
Line #: 4
2005-09-08 12:14:09.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:14:09.26 spid4 Requested By:
2005-09-08 12:14:09.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x195851a0 Cost:(0/1CC)
2005-09-08 12:14:09.26 spid4 Victim Resource Owner:
2005-09-08 12:14:09.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x195851a0 Cost:(0/1CC)
2005-09-08 12:14:14.26 spid4
Deadlock encountered Printing deadlock information
2005-09-08 12:14:14.26 spid4
2005-09-08 12:14:14.26 spid4 Wait-for graph
2005-09-08 12:14:14.26 spid4
2005-09-08 12:14:14.26 spid4 Node:1
2005-09-08 12:14:14.26 spid4 RID: 7:1:4095:0 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:14.26 spid4 Grant List 0::
2005-09-08 12:14:14.26 spid4 Owner:0x19584a80 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:55 ECID:0
2005-09-08 12:14:14.26 spid4 SPID: 55 ECID: 0 Statement Type: UPDATE
Line #: 4
2005-09-08 12:14:14.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,276521

2005-09-08 12:14:14.26 spid4 Requested By:
2005-09-08 12:14:14.26 spid4 ResType:LockOwner Stype:'OR' Mode: S
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x26730340 Cost:(0/5A0)
2005-09-08 12:14:14.26 spid4
2005-09-08 12:14:14.26 spid4 Node:2
2005-09-08 12:14:14.26 spid4 RID: 7:1:4342:0 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:14.26 spid4 Grant List 0::
2005-09-08 12:14:14.26 spid4 Owner:0x267302e0 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:53 ECID:0
2005-09-08 12:14:14.26 spid4 SPID: 53 ECID: 0 Statement Type:
CONDITIONAL Line #: 234
2005-09-08 12:14:14.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:14:14.26 spid4 Requested By:
2005-09-08 12:14:14.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:55 ECID:0 Ec:(0x1CE0B538) Value:0x195849a0 Cost:(0/218)
2005-09-08 12:14:14.26 spid4 Victim Resource Owner:
2005-09-08 12:14:14.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:55 ECID:0 Ec:(0x1CE0B538) Value:0x195849a0 Cost:(0/218)
2005-09-08 12:25:55.47 spid4
Deadlock encountered Printing deadlock information
2005-09-08 12:25:55.47 spid4
2005-09-08 12:25:55.47 spid4 Wait-for graph
2005-09-08 12:25:55.47 spid4
2005-09-08 12:25:55.47 spid4 Node:1
2005-09-08 12:25:55.47 spid4 RID: 7:1:2958:53 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:25:55.47 spid4 Grant List 0::
2005-09-08 12:25:55.47 spid4 Owner:0x19589260 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:54 ECID:0
2005-09-08 12:25:55.47 spid4 SPID: 54 ECID: 0 Statement Type: SELECT
Line #: 86
2005-09-08 12:25:55.47 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296694



2005-09-08 12:25:55.47 spid4 Requested By:
2005-09-08 12:25:55.47 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x19588c40 Cost:(0/1CC)
2005-09-08 12:25:55.47 spid4
2005-09-08 12:25:55.47 spid4 Node:2
2005-09-08 12:25:55.47 spid4 PAG: 7:1:63735 CleanCnt:2
Mode: IX Flags: 0x2
2005-09-08 12:25:55.47 spid4 Grant List 0::
2005-09-08 12:25:55.47 spid4 Owner:0x2721e220 Mode: IX Flg:0x0
Ref:1 Life:02000000 SPID:53 ECID:0
2005-09-08 12:25:55.47 spid4 SPID: 53 ECID: 0 Statement Type: UPDATE
Line #: 4
2005-09-08 12:25:55.47 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:25:55.47 spid4 Requested By:
2005-09-08 12:25:55.47 spid4 ResType:LockOwner Stype:'OR' Mode: S
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x195893e0 Cost:(0/2C64)
2005-09-08 12:25:55.47 spid4 Victim Resource Owner:
2005-09-08 12:25:55.47 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x19588c40 Cost:(0/1CC)
2005-09-08 12:29:53.88 backup Database backed up: Database: pregase,
creation date(time): 2005/09/07(13:20:48), pages dumped: 170341, first LSN:
41774:10341:1, last LSN: 41774:10350:1, number of dump devices: 1, device
information: (FILE=1, TYPE=DISK: {'C:\Archivos de programa\Microsoft SQL
Server\MSSQL\BACKUP\Backup20050908'}).
2005-09-08 12:32:23.47 backup Database backed up: Database: pregase,
creation date(time): 2005/09/07(13:20:48), pages dumped: 170341, first LSN:
41774:10353:1, last LSN: 41774:10355:1, number of dump devices: 1, device
information: (FILE=2, TYPE=DISK: {'C:\Archivos de programa\Microsoft SQL
Server\MSSQL\BACKUP\Backup20050908'}).
2005-09-08 12:38:50.10 spid58 Starting up database 'Pregase_Back'.
2005-09-08 12:38:50.10 spid58 Bypassing recovery for database
'Pregase_Back' because it is marked IN LOAD.
2005-09-08 12:38:54.04 spid58 Starting up database 'Pregase_Back'.
2005-09-08 12:38:54.04 spid58 Bypassing recovery for database
'Pregase_Back' because it is marked IN LOAD.
2005-09-08 12:38:55.63 spid58 La recuperación está estableciendo puntos
de comprobación en la base de datos 'Pregase_Back' (9)
2005-09-08 12:38:56.01 spid58 Starting up database 'Pregase_Back'.
2005-09-08 12:38:57.95 backup Database restored: Database: Pregase_Back,
creation date(time): 2005/09/07(13:20:48), first LSN: 41774:10353:1, last
LSN: 41774:10355:1, number of dump devices: 1, device information: (FILE=2,
TYPE=DISK: {'C:\Archivos de programa\Microsoft SQL
Server\MSSQL\BACKUP\Backup20050908'}).
2005-09-08 12:42:57.92 spid4
Deadlock encountered Printing deadlock information
2005-09-08 12:42:57.92 spid4
2005-09-08 12:42:57.92 spid4 Wait-for graph
2005-09-08 12:42:57.92 spid4
2005-09-08 12:42:57.92 spid4 Node:1
2005-09-08 12:42:57.92 spid4 RID: 7:1:2958:53 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:42:57.92 spid4 Grant List 0::
2005-09-08 12:42:57.92 spid4 Owner:0x195bcba0 Mode: X Flg:0x0
Ref:0 Life:02000000 SPID:54 ECID:0
2005-09-08 12:42:57.92 spid4 SPID: 54 ECID: 0 Statement Type: SELECT
Line #: 86
2005-09-08 12:42:57.92 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296694



2005-09-08 12:42:57.92 spid4 Requested By:
2005-09-08 12:42:57.92 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x267e8da0 Cost:(0/1CC)
2005-09-08 12:42:57.92 spid4
2005-09-08 12:42:57.92 spid4 Node:2
2005-09-08 12:42:57.92 spid4 PAG: 7:1:63735 CleanCnt:2
Mode: IX Flags: 0x2
2005-09-08 12:42:57.92 spid4 Grant List 0::
2005-09-08 12:42:57.92 spid4 Owner:0x267e8fa0 Mode: IX Flg:0x0
Ref:1 Life:02000000 SPID:53 ECID:0
2005-09-08 12:42:57.92 spid4 SPID: 53 ECID: 0 Statement Type: UPDATE
Line #: 4
2005-09-08 12:42:57.92 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:42:57.92 spid4 Requested By:
2005-09-08 12:42:57.92 spid4 ResType:LockOwner Stype:'OR' Mode: S
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x267e9840 Cost:(0/2C64)
2005-09-08 12:42:57.92 spid4 Victim Resource Owner:
2005-09-08 12:42:57.92 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x267e8da0 Cost:(0/1CC)
2005-09-08 12:43:33.43 spid52 Proceso con Id. 54 eliminado por el host
CPE2015, Id. de proceso host 2624.
2005-09-08 12:44:30.41 spid4



CREATE PROCEDURE spCalcularPuntaje
@pOp INT, @pConvocatoria INT, @pAgente INT
, @pCantidad int = NULL
AS

DECLARE @tempFormula VARCHAR(100)
DECLARE @concepto INT
DECLARE @inscripcion INT
DECLARE @error INT
DECLARE @temp12 VARCHAR(100)
DECLARE @tipoConvocatoria INT
DECLARE @tieneRequisitos INT
DECLARE @cargoGenerico INT
DECLARE @escuelaCabecera INT

SET NOCOUNT ON

BEGIN TRANSACTION


SELECT 'OPCION ' + cast(@pOp as varchar)
IF @pOp = 1
BEGIN

DECLARE @agenteNuevo int

CREATE TABLE #tempAgentes (idAgente int)
INSERT INTO #tempAgentes
/*
SELECT distinct IC.agente
FROM tb_InscripcionesConvocatorias IC
where IC.idInscripcionconvocatoria not in (SELECT inscripcion

FROM tb_CalificacionesDeInscripcion)
and IC.convocatoria = @pConvocatoria
order by IC.agente
*/

SELECT DISTINCT agente
FROM tb_InscripcionesConvocatorias IC
WHERE agente not in (select idAgente from tb_AuditoriaClasificacion)

AND convocatoria = @pConvocatoria




DECLARE x_CalculoP CURSOR FOR


SELECT CP.FormulaPuntaje, CP.IDConcepto,
IC.IdInscripcionConvocatoria,IC.agente
, C.TipoConvocatoria, IC.tieneRequisitos,
IC.cargoGenerico,IC.escuelaCabecera
FROM tb_ConceptosDePuntaje CP INNER JOIN tb_TiposDeConvocatorias TC

ON CP.TipoConvocatoria = TC.IdTipoConvocatoria
INNER JOIN tb_Convocatorias C ON C.TipoConvocatoria = TC.IdTipoConvocatoria

INNER JOIN tb_InscripcionesConvocatorias IC ON IC.Convocatoria =
C.IdConvocatoria
WHERE C.IdConvocatoria = @pConvocatoria
AND (CP.FormulaPuntaje IS NOT NULL or CP.FormulaPuntaje <> '')

AND IC.agente in (SELECT TOP 500 idAgente FROM #tempAgentes)

ORDER BY IC.agente,cp.nrodeorden



OPEN x_CalculoP

FETCH NEXT FROM x_CalculoP INTO @tempFormula, @concepto, @inscripcion,
@agenteNuevo, @tipoConvocatoria, @tieneRequisitos, @cargoGenerico,
@escuelaCabecera

WHILE @@FETCH_STATUS = 0
BEGIN
SELECT 'AGENTE ***: ' + cast(@agenteNuevo as varchar)


IF @tieneRequisitos = 1
BEGIN
DECLARE @temp VARCHAR(1000)
SELECT @temp = 'DECLARE @puntaje FLOAT ' + char(10) + 'SET @puntaje = 0 '
+ char(10)
SELECT @temp = @temp + 'EXEC ' +@tempFormula + ' ' + convert(varchar,
@inscripcion) + ',' + convert(varchar, @concepto)+ ', @puntaje output, 0' +
char(10)

IF EXISTS(SELECT * FROM tb_CalificacionesDeInscripcion CI

INNER JOIN tb_InscripcionesConvocatorias IC1
ON IC1.IdInscripcionConvocatoria = CI.Inscripcion
WHERE IC1.Convocatoria = @pConvocatoria and ci.inscripcion =
@inscripcion
and Concepto = @concepto)
BEGIN
SELECT @temp = @temp + 'UPDATE tb_CalificacionesDeInscripcion SET
Respuesta Responder a este mensaje
#2 Mauro
08/09/2005 - 23:18 | Informe spam
eso no es un SP es King Kong!!!
considera poner mas logica del lado de la aplicacion para no tener que usar
tantos punteros.
y si los select son muy extensos y se ejecutan en paralelo, utilizar la
clausula NOLOCK en los select
"Tumba" wrote in message
news:
Hola necesito ayuda para evitar Deadlocks con un Stored
Me da un Error en una Linea Condicional (IF EXIST) con un Update.

Adjunto la informacion de una traza y el codigo del SP para ver si me


pueden
ayudar en algo, Muchas Gracias de antemano!!!

Deadlock encountered Printing deadlock information
2005-09-08 12:14:09.26 spid4
2005-09-08 12:14:09.26 spid4 Wait-for graph
2005-09-08 12:14:09.26 spid4
2005-09-08 12:14:09.26 spid4 Node:1
2005-09-08 12:14:09.26 spid4 RID: 7:1:2958:53 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:09.26 spid4 Grant List 0::
2005-09-08 12:14:09.26 spid4 Owner:0x19585200 Mode: X


Flg:0x0
Ref:0 Life:02000000 SPID:54 ECID:0
2005-09-08 12:14:09.26 spid4 SPID: 54 ECID: 0 Statement Type:


UPDATE
Line #: 4
2005-09-08 12:14:09.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296694



2005-09-08 12:14:09.26 spid4 Requested By:
2005-09-08 12:14:09.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x195827a0 Cost:(0/554)
2005-09-08 12:14:09.26 spid4
2005-09-08 12:14:09.26 spid4 Node:2
2005-09-08 12:14:09.26 spid4 RID: 7:1:4342:0 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:09.26 spid4 Grant List 0::
2005-09-08 12:14:09.26 spid4 Owner:0x267302e0 Mode: X


Flg:0x0
Ref:0 Life:02000000 SPID:53 ECID:0
2005-09-08 12:14:09.26 spid4 SPID: 53 ECID: 0 Statement Type:


UPDATE
Line #: 4
2005-09-08 12:14:09.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:14:09.26 spid4 Requested By:
2005-09-08 12:14:09.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x195851a0 Cost:(0/1CC)
2005-09-08 12:14:09.26 spid4 Victim Resource Owner:
2005-09-08 12:14:09.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x195851a0 Cost:(0/1CC)
2005-09-08 12:14:14.26 spid4
Deadlock encountered Printing deadlock information
2005-09-08 12:14:14.26 spid4
2005-09-08 12:14:14.26 spid4 Wait-for graph
2005-09-08 12:14:14.26 spid4
2005-09-08 12:14:14.26 spid4 Node:1
2005-09-08 12:14:14.26 spid4 RID: 7:1:4095:0 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:14.26 spid4 Grant List 0::
2005-09-08 12:14:14.26 spid4 Owner:0x19584a80 Mode: X


Flg:0x0
Ref:0 Life:02000000 SPID:55 ECID:0
2005-09-08 12:14:14.26 spid4 SPID: 55 ECID: 0 Statement Type:


UPDATE
Line #: 4
2005-09-08 12:14:14.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,276521

2005-09-08 12:14:14.26 spid4 Requested By:
2005-09-08 12:14:14.26 spid4 ResType:LockOwner Stype:'OR' Mode: S
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x26730340 Cost:(0/5A0)
2005-09-08 12:14:14.26 spid4
2005-09-08 12:14:14.26 spid4 Node:2
2005-09-08 12:14:14.26 spid4 RID: 7:1:4342:0 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:14:14.26 spid4 Grant List 0::
2005-09-08 12:14:14.26 spid4 Owner:0x267302e0 Mode: X


Flg:0x0
Ref:0 Life:02000000 SPID:53 ECID:0
2005-09-08 12:14:14.26 spid4 SPID: 53 ECID: 0 Statement Type:
CONDITIONAL Line #: 234
2005-09-08 12:14:14.26 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:14:14.26 spid4 Requested By:
2005-09-08 12:14:14.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:55 ECID:0 Ec:(0x1CE0B538) Value:0x195849a0 Cost:(0/218)
2005-09-08 12:14:14.26 spid4 Victim Resource Owner:
2005-09-08 12:14:14.26 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:55 ECID:0 Ec:(0x1CE0B538) Value:0x195849a0 Cost:(0/218)
2005-09-08 12:25:55.47 spid4
Deadlock encountered Printing deadlock information
2005-09-08 12:25:55.47 spid4
2005-09-08 12:25:55.47 spid4 Wait-for graph
2005-09-08 12:25:55.47 spid4
2005-09-08 12:25:55.47 spid4 Node:1
2005-09-08 12:25:55.47 spid4 RID: 7:1:2958:53 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:25:55.47 spid4 Grant List 0::
2005-09-08 12:25:55.47 spid4 Owner:0x19589260 Mode: X


Flg:0x0
Ref:0 Life:02000000 SPID:54 ECID:0
2005-09-08 12:25:55.47 spid4 SPID: 54 ECID: 0 Statement Type:


SELECT
Line #: 86
2005-09-08 12:25:55.47 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296694



2005-09-08 12:25:55.47 spid4 Requested By:
2005-09-08 12:25:55.47 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x19588c40 Cost:(0/1CC)
2005-09-08 12:25:55.47 spid4
2005-09-08 12:25:55.47 spid4 Node:2
2005-09-08 12:25:55.47 spid4 PAG: 7:1:63735 CleanCnt:2
Mode: IX Flags: 0x2
2005-09-08 12:25:55.47 spid4 Grant List 0::
2005-09-08 12:25:55.47 spid4 Owner:0x2721e220 Mode: IX


Flg:0x0
Ref:1 Life:02000000 SPID:53 ECID:0
2005-09-08 12:25:55.47 spid4 SPID: 53 ECID: 0 Statement Type:


UPDATE
Line #: 4
2005-09-08 12:25:55.47 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:25:55.47 spid4 Requested By:
2005-09-08 12:25:55.47 spid4 ResType:LockOwner Stype:'OR' Mode: S
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x195893e0 Cost:(0/2C64)
2005-09-08 12:25:55.47 spid4 Victim Resource Owner:
2005-09-08 12:25:55.47 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x19588c40 Cost:(0/1CC)
2005-09-08 12:29:53.88 backup Database backed up: Database: pregase,
creation date(time): 2005/09/07(13:20:48), pages dumped: 170341, first


LSN:
41774:10341:1, last LSN: 41774:10350:1, number of dump devices: 1, device
information: (FILE=1, TYPE=DISK: {'C:\Archivos de programa\Microsoft SQL
Server\MSSQL\BACKUP\Backup20050908'}).
2005-09-08 12:32:23.47 backup Database backed up: Database: pregase,
creation date(time): 2005/09/07(13:20:48), pages dumped: 170341, first


LSN:
41774:10353:1, last LSN: 41774:10355:1, number of dump devices: 1, device
information: (FILE=2, TYPE=DISK: {'C:\Archivos de programa\Microsoft SQL
Server\MSSQL\BACKUP\Backup20050908'}).
2005-09-08 12:38:50.10 spid58 Starting up database 'Pregase_Back'.
2005-09-08 12:38:50.10 spid58 Bypassing recovery for database
'Pregase_Back' because it is marked IN LOAD.
2005-09-08 12:38:54.04 spid58 Starting up database 'Pregase_Back'.
2005-09-08 12:38:54.04 spid58 Bypassing recovery for database
'Pregase_Back' because it is marked IN LOAD.
2005-09-08 12:38:55.63 spid58 La recuperación está estableciendo puntos
de comprobación en la base de datos 'Pregase_Back' (9)
2005-09-08 12:38:56.01 spid58 Starting up database 'Pregase_Back'.
2005-09-08 12:38:57.95 backup Database restored: Database:


Pregase_Back,
creation date(time): 2005/09/07(13:20:48), first LSN: 41774:10353:1, last
LSN: 41774:10355:1, number of dump devices: 1, device information:


(FILE=2,
TYPE=DISK: {'C:\Archivos de programa\Microsoft SQL
Server\MSSQL\BACKUP\Backup20050908'}).
2005-09-08 12:42:57.92 spid4
Deadlock encountered Printing deadlock information
2005-09-08 12:42:57.92 spid4
2005-09-08 12:42:57.92 spid4 Wait-for graph
2005-09-08 12:42:57.92 spid4
2005-09-08 12:42:57.92 spid4 Node:1
2005-09-08 12:42:57.92 spid4 RID: 7:1:2958:53 CleanCnt:2
Mode: X Flags: 0x2
2005-09-08 12:42:57.92 spid4 Grant List 0::
2005-09-08 12:42:57.92 spid4 Owner:0x195bcba0 Mode: X


Flg:0x0
Ref:0 Life:02000000 SPID:54 ECID:0
2005-09-08 12:42:57.92 spid4 SPID: 54 ECID: 0 Statement Type:


SELECT
Line #: 86
2005-09-08 12:42:57.92 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296694



2005-09-08 12:42:57.92 spid4 Requested By:
2005-09-08 12:42:57.92 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x267e8da0 Cost:(0/1CC)
2005-09-08 12:42:57.92 spid4
2005-09-08 12:42:57.92 spid4 Node:2
2005-09-08 12:42:57.92 spid4 PAG: 7:1:63735 CleanCnt:2
Mode: IX Flags: 0x2
2005-09-08 12:42:57.92 spid4 Grant List 0::
2005-09-08 12:42:57.92 spid4 Owner:0x267e8fa0 Mode: IX


Flg:0x0
Ref:1 Life:02000000 SPID:53 ECID:0
2005-09-08 12:42:57.92 spid4 SPID: 53 ECID: 0 Statement Type:


UPDATE
Line #: 4
2005-09-08 12:42:57.92 spid4 Input Buf: Language Event:
spCalcularPuntaje 3,43,296675


2005-09-08 12:42:57.92 spid4 Requested By:
2005-09-08 12:42:57.92 spid4 ResType:LockOwner Stype:'OR' Mode: S
SPID:54 ECID:0 Ec:(0x1C639538) Value:0x267e9840 Cost:(0/2C64)
2005-09-08 12:42:57.92 spid4 Victim Resource Owner:
2005-09-08 12:42:57.92 spid4 ResType:LockOwner Stype:'OR' Mode: U
SPID:53 ECID:0 Ec:(0x19D7F538) Value:0x267e8da0 Cost:(0/1CC)
2005-09-08 12:43:33.43 spid52 Proceso con Id. 54 eliminado por el host
CPE2015, Id. de proceso host 2624.
2005-09-08 12:44:30.41 spid4



CREATE PROCEDURE spCalcularPuntaje
@pOp INT, @pConvocatoria INT, @pAgente INT
, @pCantidad int = NULL
AS

DECLARE @tempFormula VARCHAR(100)
DECLARE @concepto INT
DECLARE @inscripcion INT
DECLARE @error INT
DECLARE @temp12 VARCHAR(100)
DECLARE @tipoConvocatoria INT
DECLARE @tieneRequisitos INT
DECLARE @cargoGenerico INT
DECLARE @escuelaCabecera INT

SET NOCOUNT ON

BEGIN TRANSACTION


SELECT 'OPCION ' + cast(@pOp as varchar)
IF @pOp = 1
BEGIN

DECLARE @agenteNuevo int

CREATE TABLE #tempAgentes (idAgente int)
INSERT INTO #tempAgentes
/*
SELECT distinct IC.agente
FROM tb_InscripcionesConvocatorias IC
where IC.idInscripcionconvocatoria not in (SELECT inscripcion

FROM tb_CalificacionesDeInscripcion)
and IC.convocatoria = @pConvocatoria
order by IC.agente
*/

SELECT DISTINCT agente
FROM tb_InscripcionesConvocatorias IC
WHERE agente not in (select idAgente from tb_AuditoriaClasificacion)

AND convocatoria = @pConvocatoria




DECLARE x_CalculoP CURSOR FOR


SELECT CP.FormulaPuntaje, CP.IDConcepto,
IC.IdInscripcionConvocatoria,IC.agente
, C.TipoConvocatoria, IC.tieneRequisitos,
IC.cargoGenerico,IC.escuelaCabecera
FROM tb_ConceptosDePuntaje CP INNER JOIN tb_TiposDeConvocatorias TC

ON CP.TipoConvocatoria = TC.IdTipoConvocatoria
INNER JOIN tb_Convocatorias C ON C.TipoConvocatoria TC.IdTipoConvocatoria

INNER JOIN tb_InscripcionesConvocatorias IC ON IC.Convocatoria > C.IdConvocatoria
WHERE C.IdConvocatoria = @pConvocatoria
AND (CP.FormulaPuntaje IS NOT NULL or CP.FormulaPuntaje <> '')

AND IC.agente in (SELECT TOP 500 idAgente FROM #tempAgentes)

ORDER BY IC.agente,cp.nrodeorden



OPEN x_CalculoP

FETCH NEXT FROM x_CalculoP INTO @tempFormula, @concepto, @inscripcion,
@agenteNuevo, @tipoConvocatoria, @tieneRequisitos, @cargoGenerico,
@escuelaCabecera

WHILE @@FETCH_STATUS = 0
BEGIN
SELECT 'AGENTE ***: ' + cast(@agenteNuevo as varchar)


IF @tieneRequisitos = 1
BEGIN
DECLARE @temp VARCHAR(1000)
SELECT @temp = 'DECLARE @puntaje FLOAT ' + char(10) + 'SET @puntaje = 0


'
+ char(10)
SELECT @temp = @temp + 'EXEC ' +@tempFormula + ' ' + convert(varchar,
@inscripcion) + ',' + convert(varchar, @concepto)+ ', @puntaje output, 0'


+
char(10)

IF EXISTS(SELECT * FROM tb_CalificacionesDeInscripcion CI

INNER JOIN tb_InscripcionesConvocatorias IC1
ON IC1.IdInscripcionConvocatoria = CI.Inscripcion
WHERE IC1.Convocatoria = @pConvocatoria and ci.inscripcion > @inscripcion
and Concepto = @concepto)
BEGIN
SELECT @temp = @temp + 'UPDATE tb_CalificacionesDeInscripcion SET
Calculado=1, CalculadoDefinitivo = 1,Puntaje = ISNULL(@puntaje, 0)' +


'where
Inscripcion = ' + convert(varchar, @inscripcion) + ' and Concepto = ' +
convert(varchar, @concepto)












END
ELSE
BEGIN
SELECT @temp = @temp
+ ' INSERT INTO tb_CalificacionesDeInscripcion(Inscripcion,
Concepto, TipoConvocatoria,Puntaje,Calculado, CalculadoDefinitivo)


VALUES(' +
convert(varchar, @inscripcion)
+ ', ' + convert(varchar, @concepto) + ', ' + convert(varchar,
@tipoConvocatoria) + ', ISNULL(@puntaje, 0),1,1)'
END
EXEC(@temp)

END
ELSE --no tiene requisitos para la convocatoria
BEGIN
SELECT 'SIN REQUISITOS'
END
SELECT 'SE EJECUTO ' + cast (@tempFormula as varchar)
FETCH NEXT FROM x_CalculoP INTO @tempFormula, @concepto, @inscripcion,
@agenteNuevo, @tipoConvocatoria,@tieneRequisitos,@cargoGenerico,
@escuelaCabecera
END --del while

CLOSE x_CalculoP
DEALLOCATE x_CalculoP
DROP TABLE #tempAgentes

END

IF @pOp = 3 BEGIN
DECLARE @fechaLimite int


DECLARE x_CalculoP CURSOR FOR

SELECT CP.FormulaPuntaje, CP.IDConcepto, IC.IdInscripcionConvocatoria

,C.TipoConvocatoria, IC.tieneRequisitos, IC.cargoGenerico,
IC.EscuelaCabecera
FROM tb_ConceptosDePuntaje CP
INNER JOIN tb_TiposDeConvocatorias TC
ON CP.TipoConvocatoria = TC.IdTipoConvocatoria
INNER JOIN tb_Convocatorias C
ON C.TipoConvocatoria = TC.IdTipoConvocatoria
INNER JOIN tb_InscripcionesConvocatorias IC
ON IC.Convocatoria = C.IdConvocatoria
WHERE C.IdConvocatoria = @pConvocatoria
AND (CP.FormulaPuntaje IS NOT NULL or CP.FormulaPuntaje <> '')

AND IC.agente = @pAgente
ORDER by cp.nrodeorden

OPEN x_CalculoP

FETCH NEXT FROM x_CalculoP INTO @tempFormula, @concepto, @inscripcion,
@tipoConvocatoria,@tieneRequisitos,@cargoGenerico,@escuelaCabecera


WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @temp3 VARCHAR(8000)
IF @tieneRequisitos = 1
BEGIN
IF @tipoConvocatoria = 9 --Ingreso a la docencia
BEGIN
IF EXISTS(
SELECT *
FROM tb_PosiblesVacantes PV
WHERE PV.Convocatoria = @pConvocatoria
AND PV.CargoGenerico = @cargoGenerico
AND PV.EscuelaCabecera = @EscuelaCabecera)
BEGIN

SELECT @temp3 = 'DECLARE @puntaje numeric(4,2) ' + char(10) + 'SET
@puntaje = 0 ' + char(10)
SELECT @temp3 = @temp3 + 'EXEC ' + @tempFormula + ' ' +
convert(varchar, @inscripcion) + ','+ convert(varchar, @concepto) + ',
@puntaje output, 0 ' + char(10)

IF EXISTS(
SELECT *
FROM tb_CalificacionesDeInscripcion CI
INNER JOIN tb_InscripcionesConvocatorias IC
ON IC.IdInscripcionConvocatoria = CI.Inscripcion

WHERE IC.Convocatoria = @pConvocatoria
AND CI.inscripcion = @inscripcion
AND Concepto = @concepto)
BEGIN
UPDATE tb_InscripcionesConvocatorias
SET SinVacante9 = 0
WHERE idInscripcionConvocatoria = @inscripcion

SELECT @temp3 = @temp3 + 'UPDATE tb_CalificacionesDeInscripcion
SET Calculado=0, CalculadoDefinitivo = 0,Puntaje = ISNULL(@puntaje, 0)' +
'where Inscripcion = ' + convert(varchar, @inscripcion) + ' and Concepto


= '
+ convert(varchar, @concepto





)
EXEC(@temp3)
END
ELSE
BEGIN
SELECT @temp3 = @temp3 + 'INSERT INTO
tb_CalificacionesDeInscripcion(Inscripcion, Concepto, TipoConvocatoria,
Puntaje, Calculado, CalculadoDefinitivo) VALUES(' + convert(varchar,
@inscripcion) + ', ' + convert(varchar, @concepto) + ', '

+ convert (varchar, @tipoConvocatoria) + ', ISNULL(@puntaje,
0),0,0)'
EXEC(@temp3)
END
END
ELSE
BEGIN
SELECT 'SIN VACANTE EN CONVOCATORIA'
IF EXISTS(
SELECT *
FROM tb_CalificacionesDeInscripcion CI
INNER JOIN tb_InscripcionesConvocatorias IC
ON IC.IdInscripcionConvocatoria = CI.Inscripcion

WHERE IC.Convocatoria = @pConvocatoria
AND CI.inscripcion = @inscripcion
AND Concepto = @concepto)
BEGIN
SELECT @temp3 = 'UPDATE tb_CalificacionesDeInscripcion SET
Calculado=0, CalculadoDefinitivo = 0,Puntaje = 0' + 'where Inscripcion ' +
convert(varchar, @inscripcion) + ' and Concepto = ' + convert(varchar,
@concepto)
END
ELSE
SELECT @temp3 = 'INSERT INTO
tb_CalificacionesDeInscripcion(Inscripcion, Concepto, TipoConvocatoria,
Puntaje, Calculado, CalculadoDefinitivo) VALUES(' + convert(varchar,
@inscripcion) + ', ' + convert(varchar, @concepto)
+ ', ' + convert(varchar,@tipoConvocatoria) + ', 0,0,0)'


EXEC(@temp3)

UPDATE tb_InscripcionesConvocatorias
SET SinVacante9 = 1,
Orden9 = 51
WHERE idInscripcionConvocatoria = @inscripcion

SELECT '***********************'
SELECT sinVacante9
from tb_InscripcionesConvocatorias
where idInscripcionConvocatoria = @inscripcion


END
END
ELSE
BEGIN --tipoconvocatoria <> 9
SELECT @temp3 = 'DECLARE @puntaje numeric(4,2) ' + char(10) + 'SET
@puntaje = 0 ' + char(10)
SELECT @temp3 = @temp3 + 'EXEC ' + @tempFormula + ' ' +


convert(varchar,
@inscripcion) + ','+ convert(varchar, @concepto) + ', @puntaje output, 0 '
+ char(10)

IF EXISTS(
SELECT *
FROM tb_CalificacionesDeInscripcion CI
INNER JOIN tb_InscripcionesConvocatorias IC
ON IC.IdInscripcionConvocatoria = CI.Inscripcion

WHERE CI.inscripcion = @inscripcion
AND IC.Convocatoria = @pConvocatoria
AND Concepto = @concepto
)
BEGIN
SELECT @temp3 = @temp3 + 'UPDATE tb_CalificacionesDeInscripcion SET
Calculado=0, CalculadoDefinitivo = 0,Puntaje = ISNULL(@puntaje, 0)' +


'where
Inscripcion = ' + convert(varchar, @inscripcion) + ' and Concepto = ' +
convert(varchar, @concepto)

END
ELSE
SELECT @temp3 = @temp3 + 'INSERT INTO
tb_CalificacionesDeInscripcion(Inscripcion, Concepto, TipoConvocatoria,
Puntaje, Calculado, CalculadoDefinitivo) VALUES(' + convert(varchar,
@inscripcion) + ', ' + convert(varchar, @concepto) + ', ' + convert(







varchar, @tipoConvocatoria) + ', ISNULL(@puntaje, 0),0,0)'


EXEC(@temp3)
END --de tipoconvocatoria <> 9
END --de tiene requisitos
ELSE --No tiene requisitos para la convocatoria
BEGIN
SELECT 'SIN REQUISITOS'
IF EXISTS(
SELECT *
FROM tb_CalificacionesDeInscripcion CI
INNER JOIN tb_InscripcionesConvocatorias IC
ON IC.IdInscripcionConvocatoria = CI.Inscripcion

WHERE IC.Convocatoria = @pConvocatoria
AND CI.inscripcion = @inscripcion
AND Concepto = @concepto)
BEGIN
SELECT @temp3 = 'UPDATE tb_CalificacionesDeInscripcion SET
Calculado=0, CalculadoDefinitivo = 0,Puntaje = 0' + 'where Inscripcion ' +
convert(varchar, @inscripcion) + ' and Concepto = ' + convert(varchar,
@concepto)
END
ELSE
SELECT @temp3 = 'INSERT INTO
tb_CalificacionesDeInscripcion(Inscripcion, Concepto, TipoConvocatoria,
Puntaje, Calculado, CalculadoDefinitivo) VALUES(' + convert(varchar,
@inscripcion) + ', ' + convert(varchar, @concepto)
+ ', ' + convert(varchar, @tipoConvocatoria) + ', 0,0,0)'


EXEC(@temp3)
UPDATE tb_InscripcionesConvocatorias
SET Orden9 = 50
WHERE idInscripcionConvocatoria = @inscripcion

END
FETCH NEXT FROM x_CalculoP INTO @tempFormula, @Concepto,



@inscripcion,@tipoConvocatoria,@tieneRequisitos,@cargoGenerico,@escuelaCabec
era
END--del while

CLOSE x_CalculoP
DEALLOCATE x_CalculoP


END

Salir:

IF @error <> 0 BEGIN
PRINT('ROLLBACK')
ROLLBACK TRANSACTION
END
ELSE BEGIN
PRINT('COMMIT')
/*select *
from tb_CalificacionesDeInscripcion
where inscripcion in (select idInscripcionConvocatoria from
tb_InscripcionesConvocatorias
where agente = 220688
and convocatoria = 44)*/
COMMIT TRANSACTION
END

SET NOCOUNT OFF
































































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