sp_OAGetErrorInfo(Transact-SQL)
적용 대상: SQL Server
OLE 자동화 오류 정보를 가져옵니다.
구문
sp_OAGetErrorInfo [ objecttoken ]
[ , source OUTPUT ]
[ , description OUTPUT ]
[ , helpfile OUTPUT ]
[ , helpid OUTPUT ]
[ ; ]
인수
objecttoken
이전에 사용 하 여 sp_OACreate
만든 OLE 개체의 개체 토큰 또는 NULL
. objecttoken을 지정하면 해당 개체에 대한 오류 정보가 반환됩니다. 지정된 경우 NULL
전체 일괄 처리에 대한 오류 정보가 반환됩니다.
원본 출력
오류 정보의 원본입니다. 지정된 경우 로컬 char, nchar, varchar 또는 nvarchar 변수여야 합니다. 필요한 경우 반환 값을 잘라내어 지역 변수에 맞춥니다.
description OUTPUT
오류에 대한 설명입니다. 지정된 경우 로컬 char, nchar, varchar 또는 nvarchar 변수여야 합니다. 필요한 경우 반환 값을 잘라내어 지역 변수에 맞춥니다.
helpfile OUTPUT
OLE 개체에 대한 도움말 파일입니다. 지정된 경우 로컬 char, nchar, varchar 또는 nvarchar 변수여야 합니다. 필요한 경우 반환 값을 잘라내어 지역 변수에 맞춥니다.
helpid OUTPUT
도움말 파일 컨텍스트 ID입니다. 지정한 경우 로컬 int 변수여야 합니다.
참고 항목
이 저장 프로시저의 매개 변수는 이름이 아닌 위치로 지정됩니다.
반환 코드 값
0
(success) 또는 OLE Automation 개체에서 반환된 HRESULT의 정수 값인 0이 아닌 숫자(실패)입니다.
HRESULT 반환 코드에 대한 자세한 내용은 OLE 자동화 반환 코드 및 오류 정보를 참조하세요.
결과 집합
출력 매개 변수를 지정하지 않으면 오류 정보가 결과 집합으로 클라이언트에 반환됩니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
Error |
binary(4) | 오류 번호의 이진 표시입니다. |
Source |
nvarchar(nn) | 오류의 소스. |
Description |
nvarchar(nn) | 오류에 대한 설명입니다. |
Helpfile |
nvarchar(nn) | 원본에 대한 도움말 파일입니다. |
HelpID |
int | 도움말 원본 파일에 있는 도움말 컨텍스트 ID입니다. |
설명
OLE Automation 저장 프로시저에 대한 각 호출(제외 sp_OAGetErrorInfo
)은 오류 정보를 다시 설정하므로 sp_OAGetErrorInfo
가장 최근의 OLE Automation 저장 프로시저 호출에 대해서만 오류 정보를 가져옵니다. sp_OAGetErrorInfo
오류 정보를 다시 설정하지 않으므로 여러 번 호출하여 동일한 오류 정보를 가져올 수 있습니다.
다음 표에서는 OLE 자동화 오류 및 일반적인 원인을 나열합니다.
오류 및 HRESULT | 일반적 원인 |
---|---|
잘못된 변수 형식(0x80020008) | 메서드 매개 변수로 전달된 Transact-SQL 값의 데이터 형식이 메서드 매개 변수의 Microsoft Visual Basic 데이터 형식과 NULL 일치하지 않거나 값이 메서드 매개 변수로 전달되었습니다. |
알 수 없는 이름(0x8002006) | 지정된 개체에 대해 지정된 속성 또는 메서드 이름을 찾을 수 없습니다. |
잘못된 클래스 문자열(0x800401f3) | 지정된 ProgID 또는 CLSID는 SQL Server 인스턴스에서 OLE 개체로 등록되지 않습니다. 를 사용하여 sp_OACreate 인스턴스화하려면 먼저 사용자 지정 OLE 자동화 서버를 등록해야 합니다. In-Process() 서버에 대한 유틸리티 또는 로컬.exe (.dll ) 서버의 /REGSERVER 명령줄 스위치를 사용하여 Regsvr32.exe 서버를 등록할 수 있습니다. |
서버 실행 실패(0x80080005) | 지정된 OLE 개체가 로컬 OLE 서버(.exe 파일)로 등록되었지만 .exe 파일을 찾거나 시작할 수 없습니다. |
지정한 모듈을 찾을 수 없습니다(0x8007007e). | 지정된 OLE 개체가 in-process OLE 서버(.dll 파일)로 등록되었지만 .dll 파일을 찾거나 로드할 수 없습니다. |
형식 불일치(0x80020005) | 반환된 속성 값 또는 메서드 반환 값을 저장하는 데 사용되는 Transact-SQL 지역 변수의 데이터 형식이 속성 또는 메서드 반환 값의 Visual Basic 데이터 형식과 일치하지 않습니다. 또는 속성 또는 메서드의 반환 값이 요청되었지만 값을 반환하지는 않습니다. |
'context' 매개 변수 sp_OACreate 의 데이터 형식 또는 값이 잘못되었습니다. (0x8004275B) |
컨텍스트 매개 변수의 값은 1, 4 또는 5 중 하나여야 합니다. |
HRESULT 반환 코드 처리에 대한 자세한 내용은 OLE 자동화 반환 코드 및 오류 정보를 참조하세요.
사용 권한
sysadmin 고정 서버 역할의 멤버 자격이 필요하거나 이 저장 프로시저에서 직접 권한을 실행해야 합니다. OLE 자동화와 관련된 시스템 프로시저를 사용하려면 Ole Automation Procedures 서버 구성 옵션을 사용하도록 설정해야 합니다.
예제
다음은 OLE Automation 오류 정보를 표시하는 예입니다.
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;