sp_OAGetErrorInfo(Transact-SQL)
OLE 자동화 오류 정보를 얻습니다.
구문
sp_OAGetErrorInfo [ objecttoken ]
[ , source OUTPUT ]
[ , description OUTPUT ]
[ , helpfile OUTPUT ]
[ , helpid OUTPUT ]
인수
- objecttoken
sp_OACreate를 사용하여 이전에 만든 OLE 개체의 토큰이거나 NULL입니다. objecttoken을 지정하면 해당 개체에 대한 오류 정보가 반환됩니다. NULL이 지정되면 전체 일괄 처리에 대한 오류 정보가 반환됩니다.
- sourceOUTPUT
오류 정보의 원본입니다. 지정된 경우 로컬 char, nchar, varchar 또는 nvarchar 변수여야 합니다. 필요한 경우 반환 값을 잘라내어 로컬 변수에 맞춥니다.
- descriptionOUTPUT
오류에 대한 설명입니다. 지정된 경우 로컬 char, nchar, varchar 또는 nvarchar 변수여야 합니다. 필요한 경우 반환 값을 잘라내어 로컬 변수에 맞춥니다.
- helpfileOUTPUT
OLE 개체의 도움말 파일입니다. 지정된 경우 로컬 char, nchar, varchar 또는 nvarchar 변수여야 합니다. 필요한 경우 반환 값을 잘라내어 로컬 변수에 맞춥니다.
helpidOUTPUT
컨텍스트 ID의 도움말 파일입니다. 지정된 경우 로컬 int 변수여야 합니다.[!참고] 이 저장 프로시저의 매개 변수는 이름이 아니라 위치로 지정됩니다.
반환 코드 값
0(성공) 또는 0이 아닌 수(실패)이며 OLE 자동화 개체가 반환한 HRESULT의 정수 값입니다.
HRESULT 반환 코드에 대한 자세한 내용은 OLE 자동화 반환 코드 및 오류 정보를 참조하십시오.
결과 집합
출력 매개 변수가 지정되지 않으면 오류 정보는 클라이언트에 결과 집합으로 반환됩니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
Error |
binary(4) |
오류 번호의 이진 표시입니다. |
Source |
nvarchar(nn) |
오류의 원본입니다. |
Description |
nvarchar(nn) |
오류 설명입니다. |
Helpfile |
nvarchar(nn) |
원본에 대한 도움말 파일입니다. |
HelpID |
int |
도움말 원본 파일에 있는 도움말 컨텍스트 ID입니다. |
주의
sp_OAGetErrorInfo를 제외한 각 OLE 자동화 저장 프로시저 호출은 오류 정보를 다시 설정하므로 sp_OAGetErrorInfo는 가장 최근 OLE 자동화 저장 프로시저 호출에 대한 오류 정보만을 얻습니다. sp_OAGetErrorInfo는 오류 정보를 다시 설정하지 않으므로 여러 번 호출해도 같은 오류 정보를 얻을 수 있습니다.
다음은 OLE 자동화 오류 및 일반적 원인을 나열한 표입니다.
오류 및 HRESULT | 일반적 원인 |
---|---|
Bad variable type (0x80020008) |
메서드 매개 변수로 전달된 Transact-SQL 값의 데이터 형식이 Microsoft Visual Basic 메서드 매개 변수의 데이터 형식과 일치하지 않았거나 NULL 값이 메서드 매개 변수로 전달되었습니다. |
Unknown name (0x8002006) |
지정한 개체에 대해 지정한 속성 또는 메서드 이름이 없습니다. |
Invalid class string (0x800401f3) |
지정된 ProgID 또는 CLSID가 SQL Server 의 인스턴스에서 OLE 개체로 등록되어 있지 않습니다. 사용자 지정 OLE 자동화 서버는 sp_OACreate를 사용하여 인스턴스화되기 전에 등록되어야 합니다. In-process(.dll) 서버의 경우에는 Regsvr32.exe 유틸리티를 사용하고 로컬(.exe) 서버의 경우에는 /REGSERVER 명령줄 스위치를 사용하여 등록할 수 있습니다. |
Server execution failed (0x80080005) |
지정된 OLE 개체가 로컬 OLE 서버(.exe 파일)로 등록되어 있지만 .exe 파일을 찾거나 시작할 수 없습니다. |
The specified module could not be found (0x8007007e) |
지정된 OLE 개체가 종속 OLE 서버(.dll 파일)로 등록되어 있지만 .dll 파일을 찾거나 로드할 수 없습니다. |
Type mismatch (0x80020005) |
반환된 속성 값 또는 메서드 반환 값을 저장하는 데 사용한 Transact-SQL 로컬 변수의 데이터 형식이 속성 또는 메서드 반환 값의 Visual Basic 데이터 형식과 일치하지 않습니다. 또는 속성 또는 메서드 반환 값을 요청했으나 값이 반환되지 않았습니다. |
Datatype or value of the 'context' parameter of sp_OACreate is invalid. (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