Compartir a través de


sp_OAGetErrorInfo (Transact-SQL)

Obtiene información de errores de Automatización OLE.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_OAGetErrorInfo [ objecttoken ]
    [ , source OUTPUT ] 
    [ , description OUTPUT ] 
    [ , helpfile OUTPUT ] 
    [ , helpid OUTPUT ] 

Argumentos

  • objecttoken
    Es el token de un objeto OLE creado previamente utilizando sp_OACreate o es NULL. Si se especifica objecttoken, se devuelve la información de error de ese objeto. Si se especifica NULL, se devuelve la información de error de todo el lote.

  • source OUTPUT
    Es el origen de la información de error. Si se especifica, debe ser una variable char, nchar, varchar o nvarchar local. El valor devuelto se trunca, si es necesario, para que se ajuste a la variable local.

  • description OUTPUT
    Es la descripción del error. Si se especifica, debe ser una variable char, nchar, varchar o nvarchar local. El valor devuelto se trunca, si es necesario, para que se ajuste a la variable local.

  • helpfile OUTPUT
    Es el archivo de ayuda del objeto OLE. Si se especifica, debe ser una variable char, nchar, varchar o nvarchar local. El valor devuelto se trunca, si es necesario, para que se ajuste a la variable local.

  • helpid OUTPUT
    Es el identificador de contexto del archivo de ayuda. Si se especifica, tiene que ser una variable int local.

    [!NOTA]

    Los parámetros para este procedimiento almacenado se especifican por la posición, no por el nombre.

Valores de código de retorno

0 (correcto) o un valor distinto de cero (error) que es el valor entero del HRESULT devuelto por el objeto de automatización OLE.

Para obtener más información sobre códigos de retorno de HRESULT, vea Códigos de retorno e información de error de automatización OLE.

Conjuntos de resultados

Si no se especifican parámetros de salida, la información de error se devuelve al cliente como un conjunto de resultados.

Nombres de columna

Tipo de datos

Descripción

Error

binary(4)

Representación binaria del número de error.

Source

nvarchar(nn)

Origen del error.

Descripción

nvarchar(nn)

Descripción del error.

Helpfile

nvarchar(nn)

Archivo de ayuda del origen.

HelpID

int

Id. del contexto de Ayuda del archivo de origen correspondiente.

Comentarios

Cada llamada a un procedimiento almacenado de automatización OLE (excepto sp_OAGetErrorInfo) restablece la información de error; por tanto, sp_OAGetErrorInfo solo obtiene la información de error de la llamada más reciente a un procedimiento almacenado de automatización OLE. Observe que, debido a que sp_OAGetErrorInfo no restablece la información de error, se le puede llamar varias veces para obtener la misma información de error.

La tabla siguiente muestra los errores de automatización OLE y sus causas comunes.

Error y HRESULT

Causa común

Tipo de variable incorrecto ?(0x80020008)

El tipo de datos de un valor de Transact-SQL pasado como parámetro de un método no coincidió con el tipo de datos del parámetro del método de Microsoft Visual Basic; o se pasó un valor NULL como parámetro del método.

Nombre desconocido? (0x8002006)

No se encontró el nombre de la propiedad o del método especificado para el objeto especificado.

Cadena de clase no válida (0x800401f3)

El ProgID o CLSID especificado no está registrado como objeto OLE en una instancia de SQL Server. Es necesario registrar los servidores personalizados de automatización OLE para poder crear una instancia de los mismos mediante sp_OACreate. Esto puede realizarse mediante la utilidad Regsvr32.exe en servidores en proceso (.dll), o mediante el modificador de la línea de comandos /REGSERVER para servidores locales (.exe).

Error de ejecución del servidor (0x80080005)

El objeto OLE especificado está registrado como servidor OLE local (archivo .exe), pero no se pudo encontrar o iniciar el archivo .exe.

No se pudo encontrar el módulo especificado (0x8007007e)

El objeto OLE especificado está registrado como servidor OLE en proceso (archivo .dll), pero no se pudo encontrar o cargar el archivo .dll.

El tipo no coincide (0x80020005)

El tipo de datos de una variable local de Transact-SQL utilizada para almacenar un valor de propiedad o un valor de método devueltos no coincidió con el tipo de datos de Visual Basic para el valor devuelto de la propiedad o método. O bien, se solicitó el valor devuelto de una propiedad o método, pero no se devuelve un valor.

El tipo de datos o el valor del parámetro 'context' de sp_OACreate no es válido. (0x8004275B)

El valor del parámetro de contexto debe ser uno de los siguientes: 1, 4 o 5.

Para obtener más información sobre el procesamiento de códigos de retorno de HRESULT, vea Códigos de retorno e información de error de automatización OLE.

Permisos

Debe pertenecer al rol fijo de servidor sysadmin.

Ejemplos

El ejemplo siguiente muestra la información de errores de Automatización OLE.

DECLARE @output varchar(255)
DECLARE @hr int
DECLARE @source varchar(255)
DECLARE @description varchar(255)
PRINT 'OLE Automation Error Information'
EXEC @hr = sp_OAGetErrorInfo @object, @source OUT, @description OUT
IF @hr = 0
BEGIN
    SELECT @output = '  Source: ' + @source
    PRINT @output
    SELECT @output = '  Description: ' + @description
    PRINT @output
END
ELSE
BEGIN
    PRINT '  sp_OAGetErrorInfo failed.'
    RETURN
END

Vea también

Referencia

Procedimientos almacenados de automatización OLE (Transact-SQL)

Ejemplo de script de automatización OLE