sp_OACreate sp_OACreate - 北京怡康軟件科技有限公司 資源網(wǎng) "/>
在 Microsoft® SQL Server™ 實(shí)例上創(chuàng)建 OLE 對象實(shí)例。
sp_OACreate progid, | clsid,
objecttoken OUTPUT
[ , context ]
progid
是要?jiǎng)?chuàng)建的 OLE 對象的程序標(biāo)識符 (ProgID)。此字符串描述該 OLE 對象的類,其形式如下:
'OLEComponent.Object'
OLEComponent 是 OLE 自動(dòng)化服務(wù)器的組件名稱,Object 是 OLE 對象名。指定的 OLE 對象必須有效并且必須支持 IDispatch 接口。
例如,SQLDMO.SQLServer 是 SQL-DMO SQLServer 對象的 ProgID。SQL-DMO 的組件名稱為 SQLDMO,SQLServer 對象是有效的,并且同所有 SQL-DMO 對象一樣,SQLServer 對象支持 Idispatch。
clsid
是要?jiǎng)?chuàng)建的 OLE 對象的類標(biāo)識符 (CLSID)。此字符串描述該 OLE 對象的類,其形式如下:
'{nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}'
指定的 OLE 對象必須有效并且必須支持 IDispatch 接口。
例如,{00026BA1-0000-0000-C000-000000000046} 是 SQL-DMO SQLServer 對象的 CLSID。
objecttoken OUTPUT
是返回的對象令牌,并且必須是數(shù)據(jù)類型為 int 的局部變量。該對象令牌用于標(biāo)識所創(chuàng)建的 OLE 對象,并將在調(diào)用其它 OLE 自動(dòng)化存儲(chǔ)過程時(shí)使用。
context
指定新創(chuàng)建的 OLE 對象要在其中運(yùn)行的執(zhí)行上下文。如果指定,那么此值必須為下列值之一:
1 = 僅為進(jìn)程內(nèi) (.dll) OLE 服務(wù)器
4 = 僅為本地 (.exe) OLE 服務(wù)器
5 = 進(jìn)程內(nèi) OLE 服務(wù)器和本地 OLE 服務(wù)器均可
如果未指定,其默認(rèn)值為 5。此值將在調(diào)用 CoCreateInstance 時(shí)作為 dwClsContext 參數(shù)傳遞。
若允許使用進(jìn)程內(nèi) OLE 服務(wù)器(通過使用上下文值 1 或 5 或者不指定上下文值),該服務(wù)器將可以訪問 SQL Server 擁有的內(nèi)存和其它資源。進(jìn)程內(nèi) OLE 服務(wù)器可能會(huì)破壞 SQL Server 的內(nèi)存或資源并導(dǎo)致不可預(yù)知的結(jié)果,如 SQL Server 訪問違規(guī)。
當(dāng)上下文值指定為 4 時(shí),本地 OLE 服務(wù)器不能訪問任何 SQL Server 資源,因而不能破壞 SQL Server 的內(nèi)存或資源。
說明 此存儲(chǔ)過程的參數(shù)按位置指定,而不是按名稱指定。
0(成功)或非零數(shù)字(失?。?,是由 OLE 自動(dòng)化對象返回的 HRESULT 的整數(shù)值。
有關(guān) HRESULT 返回代碼的更多信息,請參見 OLE 自動(dòng)化返回代碼和錯(cuò)誤信息。
已創(chuàng)建的 OLE 對象在 Transact-SQL 語句批處理結(jié)束時(shí)會(huì)自動(dòng)釋放。
只有 sysadmin 固定服務(wù)器角色的成員才能執(zhí)行 sp_OACreate。
下面的示例通過使用 SQL-DMO SQLServer 對象的 ProgID 創(chuàng)建該對象。
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
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
下面的示例通過使用 SQL-DMO SQLServer 對象的 CLSID 創(chuàng)建該對象。
相關(guān)文章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
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END