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) |
Описание ошибки. |
Helpfile |
nvarchar(nn) |
Файл справки для источника. |
HelpID |
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
См. также
Справочник
Хранимые процедуры OLE-автоматизации (Transact-SQL)
Другие ресурсы
Пример сценария OLE-автоматизации