El SQl ejecuta sentencias sin permiso y cambia valores en registros

05/09/2006 - 16:39 por Juan Pablo MV | Informe spam
Hola,

Espero me puedan ayudar ya que este problema me tiene medio loco.

Pasa lo siguiente, tengo una página web que tiene una interfaz para
actualizar el estado de un registro que puede ser autorizado, cancelado
ó pendiente (1,2,3).

Cuando cambio el estado de un registro a cancelado, el sql ejecuta un
procedimiento que capture por medio del profile, este procedimiento se
ejecuta el 20% de los casos que cambio el estado del registro en la bd.

adjunto lo que ejecuta el sql despues de unos segundos en el que cambie
el estado desde la aplicación:


1. SET FMTONLY ON select
[dbo].[DBND_Vacaciones].NAME,[dbo].[DBND_Vacaciones].INCIDENT from
[dbo].[DBND_Vacaciones] SET FMTONLY OFF


2. declare @P1 int
set @P1=1
declare @P2 int
set @P20150000
declare @P3 int
set @P3=8
declare @P4 int
set @P4=1
declare @P5 int
set @P5=1
exec sp_cursorprepexec @P1 output, @P2 output, N'@P1 char(30),@P2 int',
N'SELECT * FROM [dbo].[DBND_Vacaciones] WHERE
([dbo].[DBND_Vacaciones].NAME = @P1 AND
[dbo].[DBND_Vacaciones].INCIDENT = @P2)', @P3 output, @P4 output, @P5
output, 'VacacionesWSII ', 256
select @P1, @P2, @P3, @P4, @P5



3. exec sp_cursorfetch 180150000, 16, 1, 1

4. exec sp_cursorclose 180150000

5. exec sp_cursorunprepare 1

6. SET FMTONLY ON select
[dbo].[DBND_Vacaciones].[Cedula],[dbo].[DBND_Vacaciones].[Nombre],[dbo].[DBND_Vacaciones].[CREFI],[dbo].[DBND_Vacaciones].[Oficio],[dbo].[DBND_Vacaciones].[NroPeriodos],[dbo].[DBND_Vacaciones].[Dias_A_Tomar],[dbo].[DBND_Vacaciones].[usuarioNT_Jefe],[dbo].[DBND_Vacaciones].[Paga_Sal_Actual],[dbo].[DBND_Vacaciones].[obs_JI_Rechazo],[dbo].[DBND_Vacaciones].[obs_JI_Salario_Actual],[dbo].[DBND_Vacaciones].[Estado],[dbo].[DBND_Vacaciones].[obs_GH_RechazoActual],[dbo].[DBND_Vacaciones].[Fec_Solicitud],[dbo].[DBND_Vacaciones].[Fec_Ult_Vaca],[dbo].[DBND_Vacaciones].[Fec_Ini_Vaca],[dbo].[DBND_Vacaciones].[Fec_Fin_Vaca],[dbo].[DBND_Vacaciones].[Fec_Regreso],[dbo].[DBND_Vacaciones].[Fec_Ingreso],[dbo].[DBND_Vacaciones].[Fec_Ini_Liquida],[dbo].[DBND_Vacaciones].[Fec_Fin_Liquida],[dbo].[DBND_Vacaciones].[dias_ausencias],[dbo].[DBND_Vacaciones].[tiene_periodos_vencidos],[dbo].[DBND_Vacaciones].[usuarioNT_elaboro],[dbo].[DBND_Vacaciones].NAME,[dbo].[DBND_Vacaciones].INCIDENT
from [dbo].[DBND_Vacaciones] SET FMTONLY OFF


7. declare @P1 int
set @P1=2
exec sp_prepexec @P1 output, N'@P1 varchar(12),@P2 varchar(50),@P3
int,@P4 varchar(50),@P5 int,@P6 int,@P7 varchar(15),@P8 int,@P9
nvarchar(200),@P10 nvarchar(200),@P11 int,@P12 nvarchar(200),@P13
datetime,@P14 datetime,@P15 datetime,@P16 datetime,@P17 datetime,@P18
datetime,@P19 datetime,@P20 datetime,@P21 int,@P22 varchar(5),@P23
varchar(15),@P24 char(30),@P25 int', N'UPDATE [dbo].[DBND_Vacaciones]
SET [dbo].[DBND_Vacaciones].[Cedula] = @P1,
[dbo].[DBND_Vacaciones].[Nombre] = @P2, [dbo].[DBND_Vacaciones].[CREFI]
= @P3, [dbo].[DBND_Vacaciones].[Oficio] = @P4,
[dbo].[DBND_Vacaciones].[NroPeriodos] = @P5,
[dbo].[DBND_Vacaciones].[Dias_A_Tomar] = @P6,
[dbo].[DBND_Vacaciones].[usuarioNT_Jefe] = @P7,
[dbo].[DBND_Vacaciones].[Paga_Sal_Actual] = @P8,
[dbo].[DBND_Vacaciones].[obs_JI_Rechazo] = @P9,
[dbo].[DBND_Vacaciones].[obs_JI_Salario_Actual] = @P10,
[dbo].[DBND_Vacaciones].[Estado] = @P11,
[dbo].[DBND_Vacaciones].[obs_GH_RechazoActual] = @P12,
[dbo].[DBND_Vacaciones].[Fec_Solicitud] = @P13,
[dbo].[DBND_Vacaciones].[Fec_Ult_Vaca] = @P14,
[dbo].[DBND_Vacaciones].[Fec_Ini_Vaca] = @P15,
[dbo].[DBND_Vacaciones].[Fec_Fin_Vaca] = @P16,
[dbo].[DBND_Vacaciones].[Fec_Regreso] = @P17,
[dbo].[DBND_Vacaciones].[Fec_Ingreso] = @P18,
[dbo].[DBND_Vacaciones].[Fec_Ini_Liquida] = @P19,
[dbo].[DBND_Vacaciones].[Fec_Fin_Liquida] = @P20,
[dbo].[DBND_Vacaciones].[dias_ausencias] = @P21,
[dbo].[DBND_Vacaciones].[tiene_periodos_vencidos] = @P22,
[dbo].[DBND_Vacaciones].[usuarioNT_elaboro] = @P23 WHERE
([dbo].[DBND_Vacaciones].NAME = @P24 AND
[dbo].[DBND_Vacaciones].INCIDENT = @P25)', '71608122', 'Jaime Alberto
Tamayo Cadavid', 173, 'AUXILIAR TECNICO', 1, 15, 'ClaraPCo', 0, NULL,
NULL, 3, NULL, 'Ago 11 2006 12:00:00:000AM', 'Oct 17 2005
12:00:00:000AM', 'Ago 28 2006 12:00:00:000AM', 'Sep 13 2006
12:00:00:000AM', 'Sep 14 2006 12:00:00:000AM', 'Sep 3 1984
12:00:00:000AM', 'Sep 3 2005 12:00:00:000AM', 'Sep 3 2006
12:00:00:000AM', 0, '0', NULL, 'VacacionesWSII ', 256
select @P1

8. exec sp_unprepare 2


Como dije anteriormente, esto se ejecuta automaticamente, y lo más
extraño es que esta sentencia de update no la tengo por ningun lado
del código. y me esta dañando los registros historicos de la bd.

Agradezco sus aportes para resolver este inconveniente.
 

Leer las respuestas

#1 Eduardo Castro
05/09/2006 - 18:39 | Informe spam
Revisar los triggers, puede ser que esa tabla tenga un INSTEAD OF trigger

Eduardo Castro
Microsoft MVP
MCSE 2003+Security, MCDBA, MCSD .NET, CCNA

"Juan Pablo MV" wrote in message
news:
Hola,

Espero me puedan ayudar ya que este problema me tiene medio loco.

Pasa lo siguiente, tengo una página web que tiene una interfaz para
actualizar el estado de un registro que puede ser autorizado, cancelado
ó pendiente (1,2,3).

Cuando cambio el estado de un registro a cancelado, el sql ejecuta un
procedimiento que capture por medio del profile, este procedimiento se
ejecuta el 20% de los casos que cambio el estado del registro en la bd.

adjunto lo que ejecuta el sql despues de unos segundos en el que cambie
el estado desde la aplicación:


1. SET FMTONLY ON select
[dbo].[DBND_Vacaciones].NAME,[dbo].[DBND_Vacaciones].INCIDENT from
[dbo].[DBND_Vacaciones] SET FMTONLY OFF


2. declare @P1 int
set @P1=1
declare @P2 int
set @P20150000
declare @P3 int
set @P3=8
declare @P4 int
set @P4=1
declare @P5 int
set @P5=1
exec sp_cursorprepexec @P1 output, @P2 output, N'@P1 char(30),@P2 int',
N'SELECT * FROM [dbo].[DBND_Vacaciones] WHERE
([dbo].[DBND_Vacaciones].NAME = @P1 AND
[dbo].[DBND_Vacaciones].INCIDENT = @P2)', @P3 output, @P4 output, @P5
output, 'VacacionesWSII ', 256
select @P1, @P2, @P3, @P4, @P5



3. exec sp_cursorfetch 180150000, 16, 1, 1

4. exec sp_cursorclose 180150000

5. exec sp_cursorunprepare 1

6. SET FMTONLY ON select
[dbo].[DBND_Vacaciones].[Cedula],[dbo].[DBND_Vacaciones].[Nombre],[dbo].[DBND_Vacaciones].[CREFI],[dbo].[DBND_Vacaciones].[Oficio],[dbo].[DBND_Vacaciones].[NroPeriodos],[dbo].[DBND_Vacaciones].[Dias_A_Tomar],[dbo].[DBND_Vacaciones].[usuarioNT_Jefe],[dbo].[DBND_Vacaciones].[Paga_Sal_Actual],[dbo].[DBND_Vacaciones].[obs_JI_Rechazo],[dbo].[DBND_Vacaciones].[obs_JI_Salario_Actual],[dbo].[DBND_Vacaciones].[Estado],[dbo].[DBND_Vacaciones].[obs_GH_RechazoActual],[dbo].[DBND_Vacaciones].[Fec_Solicitud],[dbo].[DBND_Vacaciones].[Fec_Ult_Vaca],[dbo].[DBND_Vacaciones].[Fec_Ini_Vaca],[dbo].[DBND_Vacaciones].[Fec_Fin_Vaca],[dbo].[DBND_Vacaciones].[Fec_Regreso],[dbo].[DBND_Vacaciones].[Fec_Ingreso],[dbo].[DBND_Vacaciones].[Fec_Ini_Liquida],[dbo].[DBND_Vacaciones].[Fec_Fin_Liquida],[dbo].[DBND_Vacaciones].[dias_ausencias],[dbo].[DBND_Vacaciones].[tiene_periodos_vencidos],[dbo].[DBND_Vacaciones].[usuarioNT_elaboro],[dbo].[DBND_Vacaciones].NAME,[dbo].[DBND_Vacaciones].INCIDENT
from [dbo].[DBND_Vacaciones] SET FMTONLY OFF


7. declare @P1 int
set @P1=2
exec sp_prepexec @P1 output, N'@P1 varchar(12),@P2 varchar(50),@P3
int,@P4 varchar(50),@P5 int,@P6 int,@P7 varchar(15),@P8 int,@P9
nvarchar(200),@P10 nvarchar(200),@P11 int,@P12 nvarchar(200),@P13
datetime,@P14 datetime,@P15 datetime,@P16 datetime,@P17 datetime,@P18
datetime,@P19 datetime,@P20 datetime,@P21 int,@P22 varchar(5),@P23
varchar(15),@P24 char(30),@P25 int', N'UPDATE [dbo].[DBND_Vacaciones]
SET [dbo].[DBND_Vacaciones].[Cedula] = @P1,
[dbo].[DBND_Vacaciones].[Nombre] = @P2, [dbo].[DBND_Vacaciones].[CREFI]
= @P3, [dbo].[DBND_Vacaciones].[Oficio] = @P4,
[dbo].[DBND_Vacaciones].[NroPeriodos] = @P5,
[dbo].[DBND_Vacaciones].[Dias_A_Tomar] = @P6,
[dbo].[DBND_Vacaciones].[usuarioNT_Jefe] = @P7,
[dbo].[DBND_Vacaciones].[Paga_Sal_Actual] = @P8,
[dbo].[DBND_Vacaciones].[obs_JI_Rechazo] = @P9,
[dbo].[DBND_Vacaciones].[obs_JI_Salario_Actual] = @P10,
[dbo].[DBND_Vacaciones].[Estado] = @P11,
[dbo].[DBND_Vacaciones].[obs_GH_RechazoActual] = @P12,
[dbo].[DBND_Vacaciones].[Fec_Solicitud] = @P13,
[dbo].[DBND_Vacaciones].[Fec_Ult_Vaca] = @P14,
[dbo].[DBND_Vacaciones].[Fec_Ini_Vaca] = @P15,
[dbo].[DBND_Vacaciones].[Fec_Fin_Vaca] = @P16,
[dbo].[DBND_Vacaciones].[Fec_Regreso] = @P17,
[dbo].[DBND_Vacaciones].[Fec_Ingreso] = @P18,
[dbo].[DBND_Vacaciones].[Fec_Ini_Liquida] = @P19,
[dbo].[DBND_Vacaciones].[Fec_Fin_Liquida] = @P20,
[dbo].[DBND_Vacaciones].[dias_ausencias] = @P21,
[dbo].[DBND_Vacaciones].[tiene_periodos_vencidos] = @P22,
[dbo].[DBND_Vacaciones].[usuarioNT_elaboro] = @P23 WHERE
([dbo].[DBND_Vacaciones].NAME = @P24 AND
[dbo].[DBND_Vacaciones].INCIDENT = @P25)', '71608122', 'Jaime Alberto
Tamayo Cadavid', 173, 'AUXILIAR TECNICO', 1, 15, 'ClaraPCo', 0, NULL,
NULL, 3, NULL, 'Ago 11 2006 12:00:00:000AM', 'Oct 17 2005
12:00:00:000AM', 'Ago 28 2006 12:00:00:000AM', 'Sep 13 2006
12:00:00:000AM', 'Sep 14 2006 12:00:00:000AM', 'Sep 3 1984
12:00:00:000AM', 'Sep 3 2005 12:00:00:000AM', 'Sep 3 2006
12:00:00:000AM', 0, '0', NULL, 'VacacionesWSII ', 256
select @P1

8. exec sp_unprepare 2


Como dije anteriormente, esto se ejecuta automaticamente, y lo más
extraño es que esta sentencia de update no la tengo por ningun lado
del código. y me esta dañando los registros historicos de la bd.

Agradezco sus aportes para resolver este inconveniente.

Preguntas similares