在线看片电视剧免费看,精品国产一区二区三区2021,99久久久无码国产精品免费,精品人妻少妇嫩草AV无码专区

    電話(huà)

    0411-39943997

仟億科技
客服中心
  • 電話(huà)
  • 電話(huà)咨詢(xún):0411-39943997
  • 手機
  • 手機咨詢(xún):15840979770
    手機咨詢(xún):13889672791
網(wǎng)絡(luò )營(yíng)銷(xiāo) >更多

在SQL中調用COM對象方法

作者:billionnet 發(fā)布于:2013/1/3 17:00:00 點(diǎn)擊量:

在SQLSERVER中創(chuàng )建 OLE 對象實(shí)例,有時(shí)我們想到數據庫中執行存儲過(guò)程的時(shí)候,同時(shí)調用系統中的COM對象。此時(shí)我們可以采用SQL的系統存儲過(guò)程sp_OACreate ,此存儲過(guò)程的調用要有一定的權限,只有 sysadmin 固定服務(wù)器角色的成員才能執行 sp_OACreate。

語(yǔ)法
sp_OACreate progid, | clsid,
    objecttoken OUTPUT
    [ , context ]

參數
progid

是要創(chuàng )建的 OLE 對象的程序標識符 (ProgID)。此字符串描述該 OLE 對象的類(lèi),其形式如下:

'OLEComponent.Object'

OLEComponent 是 OLE 自動(dòng)化服務(wù)器的組件名稱(chēng),Object 是 OLE 對象名。指定的 OLE 對象必須有效并且必須支持 IDispatch 接口。

例如,SQLDMO.SQLServer 是 SQL-DMO SQLServer 對象的 ProgID。SQL-DMO 的組件名稱(chēng)為 SQLDMO,SQLServer 對象是有效的,并且同所有 SQL-DMO 對象一樣,SQLServer 對象支持 Idispatch。

clsid

是要創(chuàng )建的 OLE 對象的類(lèi)標識符 (CLSID)。此字符串描述該 OLE 對象的類(lèi),其形式如下:

'{nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}'

指定的 OLE 對象必須有效并且必須支持 IDispatch 接口。

例如,{00026BA1-0000-0000-C000-000000000046} 是 SQL-DMO SQLServer 對象的 CLSID。

objecttoken OUTPUT

是返回的對象令牌,并且必須是數據類(lèi)型為 int 的局部變量。該對象令牌用于標識所創(chuàng )建的 OLE 對象,并將在調用其它 OLE 自動(dòng)化存儲過(guò)程時(shí)使用。

context

指定新創(chuàng )建的 OLE 對象要在其中運行的執行上下文。如果指定,那么此值必須為下列值之一:

1 = 僅為進(jìn)程內 (.dll) OLE 服務(wù)器
4 = 僅為本地 (.exe) OLE 服務(wù)器
5 = 進(jìn)程內 OLE 服務(wù)器和本地 OLE 服務(wù)器均可

如果未指定,其默認值為 5。此值將在調用 CoCreateInstance 時(shí)作為 dwClsContext 參數傳遞。

若允許使用進(jìn)程內 OLE 服務(wù)器(通過(guò)使用上下文值 1 或 5 或者不指定上下文值),該服務(wù)器將可以訪(fǎng)問(wèn) SQL Server 擁有的內存和其它資源。進(jìn)程內 OLE 服務(wù)器可能會(huì )破壞 SQL Server 的內存或資源并導致不可預知的結果,如 SQL Server 訪(fǎng)問(wèn)違規。

當上下文值指定為 4 時(shí),本地 OLE 服務(wù)器不能訪(fǎng)問(wèn)任何 SQL Server 資源,因而不能破壞 SQL Server 的內存或資源。

 

說(shuō)明  此存儲過(guò)程的參數按位置指定,而不是按名稱(chēng)指定。


返回代碼值
0(成功)或非零數字(失?。?,是由 OLE 自動(dòng)化對象返回的 HRESULT 的整數值。

我們來(lái)看一下一個(gè)具體的示例,在此示例中我們將調用一個(gè)自己寫(xiě)的COM組件,此組件的功能是提供讀寫(xiě)序列號的功能。

CREATE PROCEDURE [dbo].[sp_MyCheckSN]
@ENCRYPTION nvarchar(255) out,@type int out
  AS
 DECLARE @object int
DECLARE @hr int
DECLARE @property varchar(255)
DECLARE @return varchar(255)
DECLARE @src varchar(255), @desc varchar(255)

-- 創(chuàng )建一個(gè)COM對象
EXEC @hr = sp_OACreate 'SecuritySN.CSecurity', @object OUT
IF @hr <> 0
BEGIN
 set @ENCRYPTION='err'
     RETURN
END

-- 調用方法
declare @aa  nvarchar(255)  -- 最終返回的值
EXEC @hr = sp_OAMethod @object, 'GetDiskSN', @aa out
IF @hr <> 0
BEGIN
 set @ENCRYPTION='err'
     RETURN
END
else
begin
 set  @Type=8 -- 指明注冊讀取方式
end

---------------------
if @aa=''
begin
 -- 再讀一次
 EXEC @hr = sp_OAMethod @object, 'GetSNByAPI', @aa out
 if @hr<>0
  begin
   set @ENCRYPTION='err'
       RETURN
  end
 else
 begin
  set @Type=5 -- 指明是哪種方式讀取注冊號的
 end
end

-- 銷(xiāo)毀此對象
EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
  set @ENCRYPTION='err'
     RETURN
END
set @ENCRYPTION=@aa
GO


為了防止用戶(hù)修改存儲過(guò)程的代碼。我們可以將此存儲過(guò)程進(jìn)行加密處理。但是加密后的存儲過(guò)程也可能被破譯出來(lái)。



分享到:


Copyright@ 2011-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號   google網(wǎng)站地圖   百度網(wǎng)站地圖   網(wǎng)站地圖

公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話(huà):0411-39943997 QQ:2088827823 37482752

法律聲明:未經(jīng)許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明

综合图片亚洲网友自拍| 久久这里只精品国产免费10| 狠狠色噜噜狠狠狠狠色综合久 | 特级做A爰片毛片免费看无码| 久久久久久国产精品免费免费男同| 美丽的熟妇中文字幕|