Share via


sp_OAGetErrorInfo (Transact-SQL)

取得 OLE Automation 錯誤資訊。

主題連結圖示Transact-SQL 語法慣例

語法

sp_OAGetErrorInfo [ objecttoken ]
    [ , source OUTPUT ] 
    [ , description OUTPUT ] 
    [ , helpfile OUTPUT ] 
    [ , helpid OUTPUT ] 

引數

  • objecttoken
    這是先前利用 sp_OACreate 所建立之 OLE 物件的物件 Token,或是 NULL。如果指定了 objecttoken,便會傳回這個物件的錯誤資訊。如果指定了 NULL,就會傳回整個批次的錯誤資訊。

  • sourceOUTPUT
    這是錯誤資訊的來源。如果指定的話,它必須是本機 char、nchar、varchar 或 nvarchar 變數。必要的話,會截斷傳回值來配合本機變數。

  • descriptionOUTPUT
    這是錯誤的描述。如果指定的話,它必須是本機 charncharvarcharnvarchar 變數。必要的話,會截斷傳回值來配合本機變數。

  • helpfileOUTPUT
    這是 OLE 物件的說明檔。如果指定的話,它必須是本機 char、nchar、varchar 或 nvarchar 變數。必要的話,會截斷傳回值來配合本機變數。

  • helpidOUTPUT
    這是說明檔內容識別碼。如果指定的話,它必須是本機 int 變數。

    [!附註]

    這個預存程序的參數是依照位置來指定,而不是名稱。

傳回碼值

0 (成功) 或非零數字 (失敗),這個數字是 OLE Automation 物件所傳回之 HRESULT 的整數值。

如需有關 HRESULT 傳回碼的詳細資訊,請參閱<OLE Automation 傳回碼與錯誤資訊>。

結果集

如果未指定輸出參數,就會將錯誤資訊當作結果集傳回給用戶端。

資料行名稱

資料類型

描述

Error

binary(4)

錯誤號碼的二進位表示法。

Source

nvarchar(nn)

錯誤的來源。

描述

nvarchar(nn)

錯誤的描述。

Helpfile

nvarchar(nn)

來源的說明檔。

HelpID

int

說明來源檔案中的說明內容識別碼。

備註

每個 OLE Automation 預存程序呼叫 (除了 sp_OAGetErrorInfo) 都會重設錯誤資訊;因此,sp_OAGetErrorInfo 只會取得最近的 OLE Automation 預存程序呼叫的錯誤資訊。請注意,因為 sp_OAGetErrorInfo 並不會重設錯誤資訊,因此,您可以重複呼叫它來取得相同的錯誤資訊。

下表列出 OLE Automation 錯誤及其共同原因。

錯誤和 HRESULT

共同原因

不正確的變數類型 (0x80020008)

作為方法參數來傳遞之 Transact-SQL 值的資料類型不符合方法參數的 Microsoft Visual Basic 資料類型,或傳遞 NULL 值作為方法參數。

未知名稱 (0x8002006)

找不到指定物件的指定屬性或方法名稱。

無效的類別字串 (0x800401f3)

指定的 ProgID 或 CLSID 未登錄為 SQL Server 執行個體的 OLE 物件。您必須先登錄自訂 OLE Automation 伺服器,然後才能利用 sp_OACreate 具現化。您可以利用同處理序 (.dll) 伺服器的 Regsvr32.exe 公用程式或本機 (.exe) 伺服器的 /REGSERVER 命令列參數來執行這個動作。

伺服器執行失敗 (0x80080005)

指定的 OLE 物件已登錄成本機 OLE 伺服器 (.exe 檔),但找不到或無法啟動 .exe 檔。

找不到指定的模組 (0x8007007e)

指定的 OLE 物件已登錄成同處理序 OLE 伺服器 (.dll 檔),但找不到或無法載入 .dll 檔。

類型不符 (0x80020005)

用來儲存傳回的屬性值或方法傳回值之 Transact-SQL 本機變數的資料類型不符合屬性或方法傳回值的 Visual Basic 資料類型。或要求了屬性或方法的傳回值,但它沒有傳回值。

sp_OACreate 之 'context' 參數的資料類型或值無效。(0x8004275B)

context 參數的值應該是下列項目之一:1、4 或 5。

如需有關處理 HRESULT 傳回碼的詳細資訊,請參閱<OLE Automation 傳回碼與錯誤資訊>。

權限

需要系統管理員 (sysadmin) 固定伺服器角色中的成員資格。

範例

下列範例會顯示 OLE Automation 錯誤資訊。

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