sp_OACreate(Transact-SQL)
적용 대상: SQL Server
OLE 개체의 인스턴스를 만듭니다.
구문
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입니다.
objecttoken OUTPUT
반환된 개체 토큰이며 데이터 형식 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 Procedures
OLE 자동화와 관련된 시스템 프로시저를 사용하려면 구성을 사용하도록 설정해야 합니다.
예제
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 자동화 샘플 스크립트
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기