Поделиться через


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. Возвращаемое значение при необходимости усекается, чтобы оно уместилось в локальной переменной.

HELPFILE OUTPUT

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

helpid OUTPUT

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

Примечание.

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

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

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

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

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

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

Имя столбца Тип данных Description
Error binary(4) Двоичное представление номера ошибки.
Source 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 программы для внутрипроцессных (.dll) серверов или /REGSERVER коммутатор командной строки для локальных (.exe) серверов.
Сбой выполнения сервера (0x80080005) Указанный объект OLE зарегистрирован как локальный сервер OLE (.exe файл), но не удалось найти или запустить файл .exe.
Не удалось найти указанный модуль (0x8007007e) Указанный объект OLE зарегистрирован как внутрипроцессный сервер OLE (.dll файл), но не удалось найти или загрузить файл .dll.
Несоответствие типов (0x80020005) Тип данных локальной переменной Transact-SQL, которая используется для хранения возвращаемого значения свойства или возвращаемого значения метода не совпадает с типом данных Visual Basic возвращаемого значения свойства или метода. Или возвращаемое значение свойства или метода было запрошено, но оно не возвращает значение.
Недопустимый тип данных или значение параметра sp_OACreate context. (0x8004275B) Значение параметра контекста должно быть одним из следующих значений: 1, 4 или 5.

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

Разрешения

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

Примеры

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

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;