sp_OAGetErrorInfo (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

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

Аргументы

  • objecttoken
    Маркер объекта OLE, созданного до этого с помощью sp_OACreate, или NULL. Если задан аргумент objecttoken, то возвращаются сведения об ошибке для этого объекта. Если задается NULL, то возвращаются сведения об ошибке для всего пакета.

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

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

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

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

    ПримечаниеПримечание

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

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

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

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

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

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

Имена столбцов

Тип данных

Описание

Error

binary(4)

Двоичное представление номера ошибки.

Source

nvarchar(nn)

Источник ошибки.

Description

nvarchar(nn)

Описание ошибки.

Файл справки

nvarchar(nn)

Файл справки для источника.

Идентификатор справки

int

Идентификатор контекста справки в исходном файле справки.

Замечания

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

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

Ошибка и HRESULT

Наиболее частая причина

Неверный тип переменной (0x80020008)

Тип данных значения Transact-SQL, переданного в качестве параметра метода, не соответствует типу данных параметра метода Microsoft Visual Basic или в качестве параметра метода передано значение NULL.

Неизвестное имя (0x8002006)

Указанное имя свойства или метода для данного объекта не найдено.

Строка недействительного класса (0x800401f3)

Заданные ProgID или CLSID не зарегистрированы в качестве объектов OLE в экземпляре сервера SQL Server. Пользовательские серверы OLE-автоматизации должны быть зарегистрированы до того, как они смогут быть созданы при помощи процедуры sp_OACreate. Это может быть сделано при помощи программы Regsvr32.exe для внутрипроцессных серверов (DLL) или переключателя командной строки /REGSERVER для локальных серверов (EXE).

Выполнение сервера закончено неудачей (0x80080005)

Заданный объект OLE зарегистрирован как локальный сервер OLE (файл EXE), но файл EXE не был найден или запущен.

Заданный модуль не найден (0x8007007e)

Заданный объект OLE зарегистрирован как внутрипроцессный сервер OLE (файл DLLl), но файл DLL не мог быть найден или загружен.

Несоответствие типов данных (0x80020005)

Тип данных локальной переменной Transact-SQL, используемой для хранения возвращаемого значения свойства или возвращаемого значения метода, не соответствует типу данных Visual Basic возвращаемого значения свойства или метода. Либо возвращаемое значение свойства или метода было запрошено, но значение не было возвращено.

Тип данных или значение параметра «контекст» sp_OACreate недопустимы. (0x8004275B)

Параметр контекста должен принимать одно из следующих значений: 1, 4 или 5.

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

Разрешения

Необходимо членство в предопределенной роли сервера sysadmin.

Примеры

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