Un problema rarillo con el DBCC INPUTBUFFER.

10/09/2003 - 16:28 por Victor | Informe spam
Hola.

Desde hace unas tres semanas tengo un trigger que cada vez que se
actualiza un campo en concreto, ejecuta el comando DBCC INPUTBUFFER y
almacena el resultado en una tabla.

Esta tabla se puede modificar desde dos aplicaciones Web diferentes (A
y B), y dentro de cada Web hay varias opciones que llaman a diferentes
SP que son los que actualizan dicha tabla.

Desde A no hay problemas, pero desde B (y desde 2 SP concretos), y a
veces, el servidor Web me devuelve el siguiente error:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC SQL Server Driver][SQL Server]DBCC execution
completed. If DBCC printed error messages, contact your system
administrator.

Los SP que desde B acceden a la tabla están compuestos de dos partes:
la primera parte está dentro de un BEGIN TRAN y COMMIT/ROLLBACK TRAN,
y seguido llama a otro SP. Pues resulta que el proceso se detiene al
finalizar (correctamente) la primera parte.

Si ejecuto los SP desde el Analizador, no me dan ningún problema: me
indican el mismo mensaje ("DBCC execution completed. If DBCC printed
error messages, contact your system administrator.") cada vez que
actualiza la tabla, y al terminar la primera parte salta al SP
anidado.

¿Alguien sabe qué puede estar pasando?

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Eladio Rincón
10/09/2003 - 22:52 | Informe spam
Hola,

El mensaje que indicas en una advertencia de que el comando DBCC se ha ejecutado con éxito (como bien has dicho).

Si la ejecución desde QA es la esperada, yo intentaría ver que es lo que haces en el código VB.NET (supongo) en el proceso B. Lo que me extraña es que comentes que "sucede a veces"; podrías mostrar el código de la llamada a los procedimientos desde B.

Gracias.

Eladio Rincón
SQL Server MVP
http://eladio.europe.webmatrixhosting.net


"Comparte lo que sabes, aprende lo que no sepas." FGG

"Victor" escribió en el mensaje news:
Hola.

Desde hace unas tres semanas tengo un trigger que cada vez que se
actualiza un campo en concreto, ejecuta el comando DBCC INPUTBUFFER y
almacena el resultado en una tabla.

Esta tabla se puede modificar desde dos aplicaciones Web diferentes (A
y B), y dentro de cada Web hay varias opciones que llaman a diferentes
SP que son los que actualizan dicha tabla.

Desde A no hay problemas, pero desde B (y desde 2 SP concretos), y a
veces, el servidor Web me devuelve el siguiente error:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC SQL Server Driver][SQL Server]DBCC execution
completed. If DBCC printed error messages, contact your system
administrator.

Los SP que desde B acceden a la tabla están compuestos de dos partes:
la primera parte está dentro de un BEGIN TRAN y COMMIT/ROLLBACK TRAN,
y seguido llama a otro SP. Pues resulta que el proceso se detiene al
finalizar (correctamente) la primera parte.

Si ejecuto los SP desde el Analizador, no me dan ningún problema: me
indican el mismo mensaje ("DBCC execution completed. If DBCC printed
error messages, contact your system administrator.") cada vez que
actualiza la tabla, y al terminar la primera parte salta al SP
anidado.

¿Alguien sabe qué puede estar pasando?

Muchas gracias.

Respuesta Responder a este mensaje
#2 Victor
12/09/2003 - 09:10 | Informe spam
Aquí está uno de los dos procedures.

Ayer hice una pequeña modificación, pero sigue dando el error.

Va bien hasta la llamada a EXEC dbo.INSERTARVIAJES (más abajo pongo el
código de este procedure): es después de la llamada que se corta el
procedure. Es al hacer el UPDATE en la tabla ic_viaje cuando se lanza
un trigger de la tabla que ejecuta DBCC INPUTBUFFER y el resultado lo
graba en una tabla.

Ya digo: a veces va bien (la mayoría de veces), y otras se corta con
el error ya comentado.


CREATE PROCEDURE dbo.ic_spreservar2
(

@timporte varchar(10),
@timporte2 varchar(10),
@tmatricula varchar(10),
@tnomcond varchar(50),
@tdnicond varchar(15),
@tnomacomp varchar(50),
@tdniacomp varchar(15),
@ttrailer varchar(10),
@tpeso float,
@ttara float,
@tcaducidad datetime,
@treceptor varchar(50),
@tcargador varchar(50),
@ttelcontacto varchar(20),
@tmercancia varchar(200),
@tobservaciones varchar(200),
@tmlineales float,
@grupoida int,
@grupovuelta int,
@usuario int,
@tfechaida datetime,
@tfechavuelta datetime,
@hnomgrupida varchar(50),
@hnomgrupvuelta varchar(50),
@cenesperaida char,
@cenesperavuelta char,
@localizador int OUTPUT,
@mensaje varchar(100) OUTPUT

)
AS

SET @localizador = 0

IF (@tfechaida = '1/1/2020')
SET @tfechaida = null

IF (@tfechavuelta = '1/1/2020')
SET @tfechavuelta = null

IF ((dbo.GRUPODISPONIBLE(@grupoida,@tmlineales)=1) OR (@cenesperaida 'L'))
AND ((dbo.GRUPODISPONIBLE(@grupovuelta,@tmlineales)=1) OR
(@cenesperavuelta = 'L'))
BEGIN
DECLARE @nom_tra varchar(10)
SET @nom_tra = 'CARGA'

BEGIN TRAN @nom_tra

EXEC dbo.INSERTARESERVA
@usuario,
@grupoida,
@grupovuelta,
@ttara,
@tfechaida,
@tfechavuelta,
@tmlineales,
@hnomgrupida,
@hnomgrupvuelta,
@tcargador,
@treceptor,
@tcaducidad,
@timporte,
@timporte2,
@tmercancia,
@tpeso,
@ttelcontacto,
@tobservaciones,
@cenesperaida,
@cenesperavuelta,
@localizador OUTPUT

IF @@ERROR <> 0
BEGIN
SET @localizador = 0
GOTO fin
END

EXEC dbo.INSERTARCARGA
1,
@localizador,
@tmatricula,
@tnomcond,
@tdnicond,
@tnomacomp,
@tdniacomp,
@ttrailer,
@tpeso

IF @@ERROR <> 0
BEGIN
SET @localizador = 0
GOTO fin
END

EXEC dbo.INSERTARVIAJES
@grupoida,
@grupovuelta,
@localizador,
@tmlineales,
@cenesperaida,
@cenesperavuelta

IF @@ERROR <> 0
BEGIN
SET @localizador = 0
GOTO fin
END

DECLARE @error smallint SET @error = 0
DECLARE @locata int SET @locata = 0
DECLARE @viajes tinyint SET @viajes = CASE @grupovuelta WHEN 0
THEN 1 ELSE 2 END
DECLARE @pasaje varchar(200)
DECLARE @dto varchar(5)
DECLARE @resid varchar(5)
DECLARE @tar_ida smallint
DECLARE @tar_vuelta smallint

SELECT @dto = CAST(tid_id AS varchar) FROM ic_tipdes WHERE
(tid_porcentaje = 100)
SELECT @resid = CAST(tir_id AS varchar) FROM ic_tipres WHERE
(tir_porcentaje = 0)

SET @tar_ida = dbo.TARIFA_CHOFER_EN_PASAJE(@grupoida, @viajes)
SET @tar_vuelta = dbo.TARIFA_CHOFER_EN_PASAJE(@grupovuelta,
@viajes)

SET @pasaje = @tnomcond + '{{{' + @tdnicond + '{'
+ '{1{' + CAST(@tar_ida AS varchar) + '{1{'
+ '{1{' + CAST(@tar_vuelta AS varchar) + '{1{'
+ @resid + '{0{1{0{' + @dto + '{'

EXEC dbo.ic_spRAltaReserva
@pasaje,
1,
0, -- Bebés.
'{',
0,
'{', -- Animales.
@tcargador,
@tcaducidad,
@ttelcontacto,
@tobservaciones,
@grupoida,
@grupovuelta,
@usuario,
1,
'C',
@locata OUTPUT,
@error OUTPUT,
'',
0

IF (@error <> 0)
BEGIN
SET @localizador = 0
SET @mensaje = 'ERROR AL GENERAR RESERVA DE PASAJE ('
+ cast(@error as varchar) + '). RESERVA DE CARGA: ' +
cast(@localizador as varchar)
GOTO fin
END

UPDATE ic_respasaje SET rep_res_localiz = @localizador WHERE
(rep_localizador = @locata)

SET @mensaje = 'RESERVA CONFIRMADA. RESERVA DE PASAJE: C' +
CAST(@locata AS varchar)

fin:
IF (@localizador <> 0)
COMMIT TRAN
ELSE
BEGIN
ROLLBACK TRAN
RETURN
END
END
ELSE
BEGIN
SET @localizador = 0
SET @mensaje = 'NO HAY DISPONIBILIDAD'
END
GO


CREATE PROCEDURE dbo.INSERTARVIAJES

(
@grupoida int,
@grupovuelta int,
@localizador int,
@metros float,
@cenesperaida char,
@cenesperavuelta char
)

AS
BEGIN

DECLARE @lineas_tran smallint SET @lineas_tran = 0
DECLARE @error_tran smallint SET @error_tran = 0
DECLARE @mensaje varchar(1000)

IF (@grupoida <> 0)
BEGIN
INSERT INTO dbo.ic_viacar
SELECT vgr_codvia, @localizador AS Expr1, @metros AS Expr2
FROM dbo.ic_viagrup
WHERE (vgr_codgrup = @grupoida)

IF (@cenesperaida <> 'L')
BEGIN
UPDATE dbo.ic_viaje
SET via_metdis = via_metdis - @metros
WHERE via_codi IN (SELECT vgr_codvia FROM
dbo.ic_viagrup WHERE (vgr_codgrup = @grupoida))
END
END

IF (@grupovuelta <> 0)
BEGIN
INSERT INTO dbo.ic_viacar
SELECT vgr_codvia, @localizador AS Expr1, @metros AS Expr2
FROM dbo.ic_viagrup
WHERE (vgr_codgrup = @grupovuelta)

IF (@cenesperavuelta <> 'L')
BEGIN
UPDATE dbo.ic_viaje
SET via_metdis = via_metdis - @metros
WHERE via_codi IN (SELECT vgr_codvia FROM
dbo.ic_viagrup WHERE (vgr_codgrup = @grupovuelta))
END
END

END
GO



On Wed, 10 Sep 2003 22:52:38 +0200, Eladio Rincón
wrote:

Hola,

El mensaje que indicas en una advertencia de que el comando DBCC se ha ejecutado con éxito (como bien has dicho).

Si la ejecución desde QA es la esperada, yo intentaría ver que es lo que haces en el código VB.NET (supongo) en el proceso B. Lo que me extraña es que comentes que "sucede a veces"; podrías mostrar el código de la llamada a los procedimientos desde B.

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