sp_OACreate(Transact-SQL)

적용 대상:SQL Server

OLE 개체의 인스턴스를 만듭니다.

Transact-SQL 구문 표기 규칙

구문

  
sp_OACreate { progid | clsid } , objecttoken OUTPUT [ , context ]   

인수

progid
만들 OLE 개체의 ProgID(프로그래밍 식별자)입니다. 이 문자열은 OLE 개체의 클래스를 설명하고 형식이 'OLEComponent입니다.Object'

OLEComponent 는 OLE Automation 서버의 구성 요소 이름이며 Object 는 OLE 개체의 이름입니다. 지정된 OLE 개체는 유효해야 하며 IDispatch 인터페이스를 지원해야 합니다.

예를 들어 SQLDMO입니다. SQLServer는 SQL-DMO SQLServer 개체의 ProgID입니다 . SQL-DMO에는 SQLDMO의 구성 요소 이름이 있고, SQLServer 개체는 유효하며,(모든 SQL-DMO 개체와 마찬가지로) SQLServer 개체는 IDispatch를 지원합니다.

clsid
만들 OLE 개체의 CLSID(클래스 식별자)입니다. 이 문자열은 OLE 개체 의 클래스를 설명하고 형식이 '{nnnnnnnnn-nnnn-nnnn-nnnnn-nn-nnnnn}'입니다. 지정된 OLE 개체는 유효해야 하며 IDispatch 인터페이스를 지원해야 합니다.

예를 들어 {00026BA1-0000-0000-C000-000000000046}은 SQL-DMO SQLServer 개체의 CLSID입니다.

objecttokenOUTPUT
반환된 개체 토큰이며 데이터 형식 int의 지역 변수여야 합니다. 이 개체 토큰은 생성된 OLE 개체를 식별하고 다른 OLE Automation 저장 프로시저 호출에 사용됩니다.

context
새로 만든 OLE 개체가 실행되는 실행 컨텍스트를 지정합니다. 지정한 경우 이 값은 다음 중 하나여야 합니다.

1 = In-process(.dll) OLE 서버만 해당합니다.

4 = 로컬(.exe) OLE 서버만 해당합니다.

5 = In-process 서버와 로컬 OLE 서버 모두 허용됨

지정하지 않으면 기본값은 5입니다. 이 값은 CoCreateInstance 호출의 dwClsContext 매개 변수로 전달됩니다.

In-Process OLE 서버가 허용되는 경우(컨텍스트 값 1 또는 5사용하거나 컨텍스트 값을 지정하지 않음) SQL Server가 소유한 메모리 및 기타 리소스에 액세스할 수 있습니다. In-Process OLE 서버는 SQL Server 메모리 또는 리소스를 손상시키고 SQL Server 액세스 위반과 같은 예측할 수 없는 결과를 초래할 수 있습니다.

컨텍스트 값 4를 지정하면 로컬 OLE 서버가 SQL Server 리소스에 액세스할 수 없으며 SQL Server 메모리 또는 리소스가 손상될 수 없습니다.

참고 항목

이 저장 프로시저의 매개 변수는 이름이 아니라 위치로 지정됩니다.

반환 코드 값

OLE Automation 개체에서 반환된 HRESULT의 정수 값인 0(성공) 또는 0이 아닌 숫자(실패)입니다.

HRESULT 반환 코드에 대한 자세한 내용은 OLE Automation 반환 코드 및 오류 정보를 참조하세요.

설명

OLE 자동화 프로시저를 사용하도록 설정하면 sp_OACreate 호출하면 OLE Automation 공유 실행 환경이 시작됩니다. OLE 자동화를 사용하도록 설정하는 방법에 대한 자세한 내용은 Ole Automation Procedures 서버 구성 옵션을 참조 하세요.

만든 OLE 개체는 Transact-SQL 문 일괄 처리가 끝날 때 자동으로 제거됩니다.

사용 권한

sysadmin 고정 서버 역할의 멤버 자격이 필요하거나 이 저장 프로시저에 대한 직접 실행 권한이 필요합니다. Ole Automation ProceduresOLE 자동화와 관련된 시스템 프로시저를 사용하려면 구성을 사용하도록 설정해야 합니다.

예제

A. ProgID 사용

다음 예제에서는 ProgID를 사용하여 SQL-DMO SQLServer 개체를 만듭니다.

DECLARE @object int;  
DECLARE @hr int;  
DECLARE @src varchar(255), @desc varchar(255);  
EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT;  
IF @hr <> 0  
BEGIN  
   EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT   
   raiserror('Error Creating COM Component 0x%x, %s, %s',16,1, @hr, @src, @desc)  
    RETURN  
END;  
GO  

B. CLSID 사용

다음 예제에서는 CLSID를 사용하여 SQL-DMO SQLServer 개체를 만듭니다.

DECLARE @object int;  
DECLARE @hr int;  
DECLARE @src varchar(255), @desc varchar(255);  
EXEC @hr = sp_OACreate '{00026BA1-0000-0000-C000-000000000046}',  
    @object OUT;  
IF @hr <> 0  
BEGIN  
   EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT   
   raiserror('Error Creating COM Component 0x%x, %s, %s',16,1, @hr, @src, @desc)  
    RETURN  
END;  
GO  

참고 항목

OLE 자동화 저장 프로시저(Transact-SQL)
Ole Automation Procedures 서버 구성 옵션
OLE 자동화 샘플 스크립트