sp_OAGetErrorInfo (Transact-SQL)

Применимо к:SQL Server

Получает данные об ошибке OLE-автоматизации.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

objecttoken
Является ли маркер объекта OLE, который ранее был создан с помощью sp_OACreate или имеет значение NULL. Если задан объект, возвращается информация об ошибке для этого объекта. Если задается NULL, то возвращаются сведения об ошибке для всего пакета.

источник выходныхданных
Источник сведений об ошибке. Если задано, это должна быть локальная переменная char, nchar, varchar или nvarchar. Возвращаемое значение при необходимости усекается, чтобы оно уместилось в локальной переменной.

Описание ВЫХОДНЫХДАННЫХ
Описание ошибки. Если задано, это должна быть локальная переменная char, nchar, varchar или nvarchar. Возвращаемое значение при необходимости усекается, чтобы оно уместилось в локальной переменной.

HELPFILEOUTPUT
Файл справки для объекта OLE. Если задано, это должна быть локальная переменная char, nchar, varchar или nvarchar. Возвращаемое значение при необходимости усекается, чтобы оно уместилось в локальной переменной.

helpidOUTPUT
Идентификатор контекста файла справки. Если он указан, он должен быть локальной переменной int .

Примечание.

Параметры для этой хранимой процедуры задаются по положению, а не по имени.

Значения кода возврата

0 (успешное завершение) или ненулевое число (неуспешное завершение), которое является целочисленным значением типа HRESULT, возвращаемого объектом OLE-автоматизации.

Дополнительные сведения о кодах возврата HRESULT см. в разделе "Коды возврата автоматизации OLE" и сведения об ошибках.

Результирующие наборы

Если не заданы никакие выходные параметры, в качестве результирующего набора клиенту возвращаются сведения об ошибке.

Имена столбцов Тип данных Description
Ошибка binary(4) Двоичное представление номера ошибки.
Источник nvarchar(nn) Источник ошибки.
Description nvarchar(nn) Описание ошибки.
Helpfile nvarchar(nn) Файл справки для источника.
HelpID int Идентификатор контекста справки в исходном файле справки.

Замечания

Каждый вызов хранимой процедуры OLE Automation (за исключением sp_OAGetErrorInfo) сбрасывает сведения об ошибке. Поэтому sp_OAGetErrorInfo получает сведения об ошибке только для последнего вызова хранимой процедуры OLE Automation. Обратите внимание, что поскольку sp_OAGetErrorInfo не сбрасывает сведения об ошибке, его можно вызывать несколько раз, чтобы получить одну и ту же информацию об ошибке.

В следующей таблице перечисляются ошибки OLE-автоматизации и их наиболее частые причины.

Ошибка и HRESULT Распространенная причина
Недопустимый тип переменной (0x80020008) Тип данных значения Transact-SQL, передаваемого в качестве параметра метода, не соответствовал типу данных Microsoft Visual Basic параметра метода, или значение NULL было передано в качестве параметра метода.
Неизвестное имя (0x8002006) Указанное имя свойства или метода для данного объекта не найдено.
Недопустимая строка класса (0x800401f3) Указанный progID или CLSID не регистрируется в качестве объекта OLE в экземпляре SQL Server. Прежде чем создавать экземпляры с помощью sp_OACreate, необходимо зарегистрировать пользовательские серверы автоматизации OLE. Это можно сделать с помощью служебной программы Regsvr32.exe для серверов in-process (DLL) или коммутатора командной строки /REGSERVER для локальных серверов (.exe).
Сбой выполнения сервера (0x80080005) Заданный объект OLE зарегистрирован как локальный сервер OLE (файл EXE), но файл EXE не был найден или запущен.
Не удалось найти указанный модуль (0x8007007e) Заданный объект OLE зарегистрирован как внутрипроцессный сервер OLE (файл DLLl), но файл DLL не мог быть найден или загружен.
Несоответствие типов (0x80020005) Тип данных локальной переменной Transact-SQL, которая используется для хранения возвращаемого значения свойства или возвращаемого метода, не соответствует типу данных Visual Basic возвращаемого значения свойства или метода. Либо возвращаемое значение свойства или метода было запрошено, но значение не было возвращено.
Недопустимый тип или значение параметра context sp_OACreate. (0x8004275B) Значение параметра контекста должно быть одним из следующих значений: 1, 4 или 5.

Дополнительные сведения об обработке кодов возврата HRESULT см. в разделе OLE Automation Return Code и сведения об ошибках.

Разрешения

Требуется членство в предопределенных ролях сервера sysadmin или разрешение на выполнение непосредственно в этой хранимой процедуре. Ole Automation Procedures Необходимо включить настройку для использования любой системной процедуры, связанной с автоматизацией OLE.

Примеры

В следующем примере отображаются сведения об ошибке 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;  

См. также

Хранимые процедуры OLE Automation (Transact-SQL)
Пример скрипта OLE-автоматизации