sp_OAGetErrorInfo (Transact-SQL)
Obtiene información de errores de Automatización OLE.
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.sourceOUTPUT
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.descriptionOUTPUT
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.helpfileOUTPUT
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.helpidOUTPUT
Es el Id. de contexto del archivo de ayuda. Si se especifica, debe 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. |
Description |
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. |
Notas
Cada llamada a un procedimiento almacenado de automatización OLE (excepto sp_OAGetErrorInfo) restablece la información de error; por tanto, sp_OAGetErrorInfo sólo 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 MicrosoftVisual 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 a la función fija 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