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, то возвращаются сведения об ошибке для всего пакета.source OUTPUT
Источник сведений об ошибке. Если этот аргумент задан, то он должен быть локальной переменной char, nchar, varchar или nvarchar. Возвращаемое значение при необходимости усекается, чтобы оно уместилось в локальной переменной.description OUTPUT
Описание ошибки. Если этот аргумент задан, то он должен быть локальной переменной char, nchar, varchar или nvarchar. Возвращаемое значение при необходимости усекается, чтобы оно уместилось в локальной переменной.helpfile OUTPUT
Файл справки для объекта OLE. Если этот аргумент задан, то он должен быть локальной переменной char, nchar, varchar или nvarchar. Возвращаемое значение при необходимости усекается, чтобы оно уместилось в локальной переменной.helpid OUTPUT
Идентификатор контекста файла справки. Если этот аргумент задан, то он должен быть локальной переменной типа int.Примечание
Параметры для этой хранимой процедуры задаются по положению, а не по имени.
Значения кодов возврата
0 (успешное завершение) или ненулевое значение (неуспешное завершение), которое является целочисленным значением HRESULT, возвращаемого объектом OLE-автоматизации.
Дополнительные сведения о кодах возврата типа HRESULT см. в разделе Коды возврата и сведения об ошибках OLE-автоматизации.
Результирующие наборы
Если не заданы никакие выходные параметры, в качестве результирующего набора клиенту возвращаются сведения об ошибке.
Имена столбцов |
Тип данных |
Описание |
---|---|---|
Error |
binary(4) |
Двоичное представление номера ошибки. |
Source |
nvarchar(nn) |
Источник ошибки. |
Описание |
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