Oasis

lunes, julio 10, 2006

sp_OAGetErrorInfo


Hoy me tope con un problema que me parece que merece la pena ser publicado, el caso es que existen varios Store Procedures en una de las aplicaciones a las que les doy soporte, los cuales lanzan DTS.

Cuando empiezo a revisar el problema, lo primero que me imagine fue que el SP no corrió, pero no fue así, el SP si se ejecuto, entonces me fui a la parte donde se ejecuta el dichoso DTS ya que es la parte medular del proceso, debido a que sin DTS no hay datos y sin datos no se reflejan resultados y precisamente eso fue lo que reporto el usuario.

Bueno, al principio no tenia idea de que pasaba, ejecutaba el código para lanzar el DTS y solo recibía mensajes que yo los había puesto. Voy a poner el código para verlo mejor.

EXEC @hr = sp_OACreate 'DTS.Package', @oPKG OUTPUT -- Create Package
EXEC @hr = sp_OAMethod @oPKG, 'LoadFromSQLServer("SERVER", "USER", "PWD", 0, , , , "DTSNAME")', NULL
if ( @hr <> 0 )
begin
print ' Error in Loading Package '
end

EXEC @hr = sp_OAMethod @oPKG, 'Execute'
if ( @hr <> 0 )
begin
print ' Error in Executing Package '
end

EXEC @hr = sp_OAMethod @oPKG, 'UnInitialize'
EXEC @hr = sp_OADestroy @oPKG

Como vemos solo me salía Error in Loading Package y Error in Executing Package, con esto pues no podía llegar a ningún lado, así que puse un print para ver el valor de @hr. Eso no me ayudo en absolutamente nada, así que empecé a investigar los métodos sp_OACreate, sp_OAMethod y me encontré con uno que estaba omitiendo y que es de gran ayuda, este es
sp_OAGetErrorInfo.

Con este saque cual era el problema, substituyes esos mensajes de error que puse por esos que te genera este comando y listo, ahora si tenemos un mensaje de error real.

Este seria un ejemplo:

EXEC sp_OAGetErrorInfo @oPKG, @errorSource OUTPUT, @errorDescription OUTPUT

SELECT [Error Source] = @errorSource, [Description] = @errorDescription


Aquí dejo el código completo:

DECLARE @hr int, @oPKG int
DECLARE @errorSource NVARCHAR(1000), @errorDescription NVARCHAR(1000)

EXEC @hr = sp_OACreate 'DTS.Package', @oPKG OUTPUT -- Create Package
EXEC @hr = sp_OAMethod @oPKG, 'LoadFromSQLServer("SERVER", "USER", "PWD", 0, , , , "DTS")', NULL
if ( @hr <> 0 ) begin
EXEC sp_OAGetErrorInfo @oPKG, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription
end

EXEC @hr = sp_OAMethod @oPKG, 'Execute'
if ( @hr <> 0 ) begin
EXEC sp_OAGetErrorInfo @oPKG, @errorSource OUTPUT, @errorDescription OUTPUT
SELECT [Error Source] = @errorSource, [Description] = @errorDescription

end

EXEC @hr = sp_OAMethod @oPKG, 'UnInitialize'
EXEC @hr = sp_OADestroy @oPKG

1 Comments:

  • Bonjorno, oasis-luisenrique.blogspot.com!
    [url=http://cialishols.pun.pl/ ]Vendita cialis online[/url] [url=http://viagratetb.pun.pl/ ]Comprare viagra [/url] [url=http://cialisiall.pun.pl/ ]Acquistare cialis in Italia[/url] [url=http://viagraradj.pun.pl/ ]Compra viagra online[/url] [url=http://cialisantr.pun.pl/ ]Comprare cialis online[/url] [url=http://viagrarier.pun.pl/ ]Acquisto viagra generico[/url]

    By Anonymous Anónimo, at 11:48 p. m.  

Publicar un comentario

<< Home